From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8FC91C636CC for ; Thu, 16 Feb 2023 23:52:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E19D66B0071; Thu, 16 Feb 2023 18:52:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DCA836B0072; Thu, 16 Feb 2023 18:52:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C91636B0074; Thu, 16 Feb 2023 18:52:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id BB5FD6B0071 for ; Thu, 16 Feb 2023 18:52:52 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7946BA1307 for ; Thu, 16 Feb 2023 23:52:52 +0000 (UTC) X-FDA: 80474807784.12.E1360BF Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf21.hostedemail.com (Postfix) with ESMTP id B08711C0004 for ; Thu, 16 Feb 2023 23:52:50 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=AZwUiVgv; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=shy828301@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676591570; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cQQttzFDRF1k4K8Lrrl35IKonA1RDweLLR+nTYZXoZo=; b=xbY+ZLHGf+fB6qQ8LsxKMhMU8G+r1oHYBvgHOT6FVlq9bmrDrowl9umlz+g+2phDnPkI8u W+4EBqXK2Z/lQMUU9anE2ZJ3MxHyggk4W0wTalzNkqKj/WO5MBaKwnzrZT9hD9Il8wGGnM u64JY6jKXoPrTNfGLCpVA5smSLFIUM0= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=AZwUiVgv; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=shy828301@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676591570; a=rsa-sha256; cv=none; b=AD0LiFT+xNC0Y74PxziaNm7FwGMBncqmM5dv7UbhtQd0oZGiXZl9KKq7BwVV9xV2AMXTnY adaFiXxHwDpesD74ReWFiD9/TudwJHxbfpNPWQU53jrNrU6XHnAkhUAyhH7vCTsGXgzHVl UD1tMrN6a4m63IdliQRWQg/4BH1UY/E= Received: by mail-pf1-f172.google.com with SMTP id r17so2490931pff.9 for ; Thu, 16 Feb 2023 15:52:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1676591569; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=cQQttzFDRF1k4K8Lrrl35IKonA1RDweLLR+nTYZXoZo=; b=AZwUiVgv6L1VRiwCkkgGm0FdffD39p58AAM7b3WBm7WMtV8qgOpJ4ygj0PXdRtvxxv dI8sn/vFALEo4qIahSgeKWlQvl3V7/pABfItlo45RyvkTwKix/zYDsQTTSyypKHWFR6U Na58oaNpMHG/d0a/+gqiHGTKxjfmLHrviiVujOpcQzMmeJ7yTzeY2Tf9yeZEwV/fdDEj 4loH5MdFbcqh9BnvaA1fJqc8PH/kO81xTuw4ZoyQLQ4QfjNkIoSvrKZHQzSsAQ5R08Vg SXkN+qpERH3lQDZQF6fT4RCUp8+tfwQ4KiciMUVxYlTkwSpmVjxJi/zG2SA9DgBJyqhV wOeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1676591569; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cQQttzFDRF1k4K8Lrrl35IKonA1RDweLLR+nTYZXoZo=; b=NhTru/d+q3oTP0RsbWvg4gRDOHuW6W0Jt4hDrk0VxQX87j135PZp6dpRpQw0YfvP8c 2nBBwJtrELI91mfFHM67hKWJym5RQW4kjiKZx7yASh+foXMXopezhrlwZd+YT1JcALpB uxqDiJ9yweXrvay75NpmSo8zQXHUqqtAK/QHQo8GNmgkgEWgoE+HoZcTRMKWkwenOBT1 7Aow92DsNVRLjjuohRfdDpC/L9/z0T6hp20gaBU3oK9Gpxny96sVDZ2pgE2byXWCQCiT OceKowaCwhiuCARn/Uw49/aw1K22KldoAROnsnfO6tS9luV/TfOSX0NISW85ak0tsoym RUog== X-Gm-Message-State: AO0yUKVOnZSUrasrrgc0rYURbTQbVmLgvHKu2gTQgoVRULNzIf+MODyj HZidx8jvVLjuD4RuEAvi2fnPmeYYi+jUzTMAPYo= X-Google-Smtp-Source: AK7set/XxDEp84qJkQ2ZGaZgeYodfzB/yLWkoCQb3R4uSy4sCDEm86zWbXqWAmfoU1Mlv/me9SR+M158K3SJvt1XlDo= X-Received: by 2002:aa7:9510:0:b0:5a8:b987:b71f with SMTP id b16-20020aa79510000000b005a8b987b71fmr1325317pfp.20.1676591569455; Thu, 16 Feb 2023 15:52:49 -0800 (PST) MIME-Version: 1.0 References: <20230214075710.2401855-1-stevensd@google.com> <20230214075710.2401855-2-stevensd@google.com> In-Reply-To: From: Yang Shi Date: Thu, 16 Feb 2023 15:52:37 -0800 Message-ID: Subject: Re: [PATCH 2/2] mm/khugepaged: skip shmem with userfaultfd To: Peter Xu Cc: David Stevens , linux-mm@kvack.org, Matthew Wilcox , Andrew Morton , "Kirill A . Shutemov" , David Hildenbrand , Hugh Dickins , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: B08711C0004 X-Stat-Signature: iyx9kkz5jaoxi7n9iig7zzfw1n7uxxcz X-HE-Tag: 1676591570-359149 X-HE-Meta: U2FsdGVkX19wnPbdVQ22XKIV1rjoOP0RWP6aa5pbJJ9RdwjbDyODtO/j6mW/YFfZ78i6o/mh7Oan+lcstDqpiA9c4YZkDvEdJvi3XQcJXD48PM0lkrPctiYWTIqbwess1wvx9rTyUTPRYiwRenf08Ay3SY5mUc7OIz2jJun4XFm/g6tnVl33NUtacF64E8inm4/FxZxSF7Nbs8JjDezgELZXKUjqrUmaq6GinItFPnGKoXsCFxQRpJTzXweaSV3UfvssZBAO0oE/4BCw0CxH+SUi7/MJh8w8vpHxjroABU/Xv8CJ2XpjDMr6mrPFC/Z+pUQUqAWe+JcDYN+Ya9X8kpO66iOab1zKRvqpHqCbNbMcgkKnXslsQop1c/sNs0oxJy6WJf5YkDJzw0M/iv/qYXLkX0v8J8HUBppGOuCBYW1x3g5iZJRWMJPHu+EmvA9Vz8iRFLUs2aXO8QdJH6nJOaEO2fJzC6KXKAmhIYoYZyVHo7Q68q9ueUFFuiUZa+xxjDPVlb4w2SnE22SmICi1C1JKwzkiF8PaQ8rCjrr3yGc8QKypiSAR3kjPgGfMNhldSzkJ3k/Is11FEbuqTKhyOaUXiLsdiw5yPYso8Ktde1/ffz2fq2BoIdXzoLmRyzwzuTBH+sqF2ybOpKaZOMiqY+9lbrjDGEBs4ft086IdA/AZ41VwS1WhBJFmcReIZlb2Aw09mWhVjgpGpglxcr12wqfqLTiBLSPheLFtjTVs5SuL0oNg7LWFan33sZVCCXE+4bf1iGE/9HPeYz+VEYgbbKfayocd9015RZH1V+fQT8xhHcuQuvfXhgHUNNZSxyybyBlDwFfI5ScSLyjeko5rr69SVK56LzuFCZndb5g2vKZCPsSxURE2FCTMG2f1gCuU6XYOUu2qiIIN7hVBtRzqsy9kBpca9JhUZd4T65vF+2jinQuWsT97KwEG60zr1Fkr6UV4fMECrTJQPfvY/zR ZZGEXVau +fAM+hmd256IpznGVZaL3h1hTNtxS72xkIpNr2Sv2j3rJbDS1y7zfrbx78g+w44n6N1jVAR644AXFoRHldD9mViI9927wHfKRdomm/LrQGVuDOn9oKJa5wbTlVjF7CKAIBDY/M3ZahVYtOmYekrqiQiP3v7L6t/amcjruyQah29cRNyy9o11stR+aGv6hc5vJxCZRoPBTXhAJB1CACOoBCbP7hInhBhP6goozuT7GBFQSGGym5pd7u+Eo+V0DMxtqhUdWfM6Nww5A6uvNNGQZLuKhcDNaQ13S+xHrRHqY/DGjWBvSiKJIqRnXqn/W6R1RrbKnfkjczADgyLV30JiLpBnyZ81XtzKyNt/hCkduSfWlxFjCxPQV356Kr7qTj4/8USNE/QVfHSqe+ObVN4akMq16t6Annj3jbbB8jvQNHsbZgTc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Feb 16, 2023 at 3:07 PM Peter Xu wrote: > > Hi, Yang, > > On Thu, Feb 16, 2023 at 01:58:55PM -0800, Yang Shi wrote: > > > IIUC we released it before copying the pages: > > > > The huge page is locked until the copy is done. It should be fine > > unless the users inspect the page content without acquiring page lock. > > The current patch from David has replaced "insert hpage into holes" with > "insert RETRY entries into holes", so IMHO the hpage is not visible at all > when releasing page cache lock here. IIRC his patch (just this patch, don't include patch #1) conceptually does: acquire xa lock fill the holes with retry entry if (nr_none == nr_none_check && uffd missing pass) /* no hole is filled since holding xa_lock and no uffd missing */ install huge page in page cache <-- huge page is visible here else { set error code replace retry entry back to NULL } release xa_lock if (succeed) { copy content to huge page unlock huge page } else restore the small pages Am I missing something? > > All the accessors (including RCU protected ones to access page cache; those > may not need to take the page lock) should be spinning on the RETRY entry, > which it seems fine to me. But my question was whether it's legal to keep > them spinning even after releasing the page cache lock. After releasing the page cache lock, they should see NULL entry or huge page IIUC. > > Thanks, > > > > > > > > > xa_locked: > > > xas_unlock_irq(&xas); <-------------------------------- here > > > xa_unlocked: > > > > > > /* > > > * If collapse is successful, flush must be done now before copying. > > > * If collapse is unsuccessful, does flush actually need to be done? > > > * Do it anyway, to clear the state. > > > */ > > > try_to_unmap_flush(); > > > > > > Before insertion of the multi-index: > > > > > > /* Join all the small entries into a single multi-index entry. */ > > > xas_set_order(&xas, start, HPAGE_PMD_ORDER); > > > xas_store(&xas, hpage); > > > > > > Thanks, > > > > > > -- > > > Peter Xu > > > > > > > -- > Peter Xu >