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 0536CECAAD1 for ; Wed, 31 Aug 2022 19:34:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7667D6B0072; Wed, 31 Aug 2022 15:34:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 717068D0002; Wed, 31 Aug 2022 15:34:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 60D478D0001; Wed, 31 Aug 2022 15:34:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 53EE76B0072 for ; Wed, 31 Aug 2022 15:34:22 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 19CC580E4C for ; Wed, 31 Aug 2022 19:34:22 +0000 (UTC) X-FDA: 79860889164.01.4B0CAEA Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by imf15.hostedemail.com (Postfix) with ESMTP id B9C94A0040 for ; Wed, 31 Aug 2022 19:34:21 +0000 (UTC) Received: by mail-pl1-f176.google.com with SMTP id f24so12313906plr.1 for ; Wed, 31 Aug 2022 12:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=62QFhQr6T6C7Uzxmu2f6DFJ53invGibIkOgnEF0w9j8=; b=QYOlLhfOjozgTvDXoCLG1/6hR8h5FU0lC6xF9i14v/hIQqRISEBBO9by+CXUNjWfcO h8RHWf5EK47xQniu//4ipT+DsI880Tm1TXxTfa72Vs8n1uL3DpQKnQGy44fI/MgafwXE aQOGwskAEnpV5nwo04nFZ+0XxczT0ehnN1jQ5YsRePySwBune4t4XOQEGofAMzBB5+8G DcrOOsAJH6+kehaClBpEj76s19xxqO10rXz//ta4v4vi3IRNKEC3mqQB69byxOuZTGuI EENk2cnoO1WhUifWWQZRLROzxajOvHmO0tCSpgs53Uc0yYx9PYWBYp+uxg+m/T30XD2N ssmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=62QFhQr6T6C7Uzxmu2f6DFJ53invGibIkOgnEF0w9j8=; b=7JzxGjKZf+AQrkVBt/n3Hpqf0zCwYBJGU3Pf+VY8yjv/rqwlL9lHWllkY5GlnJ7yQf KAmz5x2a+CZBqBWwUsUGYRsovKZYInEaQlVU0O0Z3CaV4+WdC9Q6OQKbQkhW7ndH0cLO FOZe2J75gMqcFpzSectGOxgumatFlTBACXVWiRYTfReyKPMjEYbjmX2QzzcdSTp9bmYm akJ1NNCwit2Lml5e/MA5Mo8HDwi3Cfbj5RveRmhl7q9w+9M5mwxDs9gss+0SnxcD8bhA ICRspBaGVNO+UVMa3ZCZPfEC7gLu2cyo+npCilOfXpyUezeR0aqxvLYGOchrmiSiYv8g myvw== X-Gm-Message-State: ACgBeo2F1oZz6NxeKh2HLaTeelL0+NdpER+/xtPBz3G6tcLkd8NIP1dP 5sAGtUJsz3dtLItomYic361seTKBb6E1A67X9eM= X-Google-Smtp-Source: AA6agR5ez8Cp6iPT1GBGjr2gTSClklB5WWWNwunHMnskYb3QnFlZ6RA5eppLgiqw9MHml11fMvv374OyUmbO1W2pVRM= X-Received: by 2002:a17:90b:1b49:b0:1fd:dccc:91f7 with SMTP id nv9-20020a17090b1b4900b001fddccc91f7mr4730514pjb.200.1661974460638; Wed, 31 Aug 2022 12:34:20 -0700 (PDT) MIME-Version: 1.0 References: <20220831083024.37138-1-david@redhat.com> <4845ae71-b7dd-1707-ebc3-2eb3521e7fa0@redhat.com> In-Reply-To: From: Yang Shi Date: Wed, 31 Aug 2022 12:34:08 -0700 Message-ID: Subject: Re: [PATCH v1] mm/ksm: update stale comment in write_protect_page() To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Jason Gunthorpe , John Hubbard , Andrea Arcangeli , Hugh Dickins , Peter Xu , "Kirill A. Shutemov" Content-Type: text/plain; charset="UTF-8" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661974461; 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=62QFhQr6T6C7Uzxmu2f6DFJ53invGibIkOgnEF0w9j8=; b=r4nFti/9zWZioAhRygQg+S5Kbt8XtbqoSD8NIhHuQgyEWV5M8U2waF8hHGUAzeR8PXkILd 3TupH4yXQ/m3sOU8T9L92f9qadnwa/ms4o3R3ARd9fnQIm9mtdnF3/WjGvIXixodIbSamN qk8qYA1RgRzBe9NSP5JQ5vvdz8xhZ8g= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QYOlLhfO; spf=pass (imf15.hostedemail.com: domain of shy828301@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661974461; a=rsa-sha256; cv=none; b=D+hBEXcSTm38+WKJvtQfsELbRNxVhmKecSUBqDSo2/9HrEEoVn8kQCLAyrrVFEEO2sStvI v5KOA6g+/oA82wMd7rXNeJPTUY84EJU3eRXwGcJzUPcxC6RrEvf0tr5/53gjyN14kJjsNQ B7ek6O81j6TB2IswPbfDXpKsrYjEyxM= X-Rspamd-Queue-Id: B9C94A0040 Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=QYOlLhfO; spf=pass (imf15.hostedemail.com: domain of shy828301@gmail.com designates 209.85.214.176 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam10 X-Stat-Signature: osqpdc19xn48sd94nmctynr3tmyzqkp5 X-HE-Tag: 1661974461-173130 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 Wed, Aug 31, 2022 at 12:15 PM David Hildenbrand wrote: > > On 31.08.22 21:08, Yang Shi wrote: > > On Wed, Aug 31, 2022 at 11:29 AM David Hildenbrand wrote: > >> > >> On 31.08.22 19:55, Yang Shi wrote: > >>> On Wed, Aug 31, 2022 at 1:30 AM David Hildenbrand wrote: > >>>> > >>>> The comment is stale, because a TLB flush is no longer sufficient and > >>>> required to synchronize against concurrent GUP-fast. This used to be true > >>>> in the past, whereby a TLB flush would have implied an IPI on architectures > >>>> that support GUP-fast, resulting in GUP-fast that disables local interrupts > >>>> from completing before completing the flush. > >>> > >>> Hmm... it seems there might be problem for THP collapse IIUC. THP > >>> collapse clears and flushes pmd before doing anything on pte and > >>> relies on interrupt disable of fast GUP to serialize against fast GUP. > >>> But if TLB flush is no longer sufficient, then we may run into the > >>> below race IIUC: > >>> > >>> CPU A CPU B > >>> THP collapse fast GUP > >>> > >>> gup_pmd_range() <-- see valid pmd > >>> > >>> gup_pte_range() <-- work on pte > >>> clear pmd and flush TLB > >>> __collapse_huge_page_isolate() > >>> isolate page <-- before GUP bump refcount > >>> > >>> pin the page > >>> __collapse_huge_page_copy() > >>> copy data to huge page > >>> clear pte (don't flush TLB) > >>> Install huge pmd for huge page > >>> > >>> return the obsolete page > >> > >> Hm, the is_refcount_suitable() check runs while the PTE hasn't been > >> cleared yet. And we don't check if the PMD changed once we're in > >> gup_pte_range(). > > > > Yes > > > >> > >> The comment most certainly should be stale as well -- unless there is > >> some kind of an implicit IPI broadcast being done. > >> > >> 2667f50e8b81 mentions: "The RCU page table free logic coupled with an > >> IPI broadcast on THP split (which is a rare event), allows one to > >> protect a page table walker by merely disabling the interrupts during > >> the walk." > >> > >> I'm not able to quickly locate that IPI broadcast -- maybe there is one > >> being done here (in collapse) as well? > > > > The TLB flush may call IPI. I'm supposed it is arch dependent, right? > > Some do use IPI, some may not. > > Right, and the whole idea of the RCU GUP-fast was to support > architectures that don't do it. x86-64 does it. IIRC, powerpc doesn't do > it -- but maybe it does so for PMDs? It looks powerpc does issue IPI for pmd flush. But arm64 doesn't IIRC. So maybe we should implement pmdp_collapse_flush() for those arches to issue IPI. > > -- > Thanks, > > David / dhildenb >