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 26DDEC27C4F for ; Thu, 13 Jun 2024 08:54:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9D29A6B00B6; Thu, 13 Jun 2024 04:54:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 982376B00B7; Thu, 13 Jun 2024 04:54:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 84AE56B00B8; Thu, 13 Jun 2024 04:54:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 669D76B00B6 for ; Thu, 13 Jun 2024 04:54:55 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 279521C11E0 for ; Thu, 13 Jun 2024 08:54:55 +0000 (UTC) X-FDA: 82225255350.18.FBFE639 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by imf14.hostedemail.com (Postfix) with ESMTP id 4B85B100016 for ; Thu, 13 Jun 2024 08:54:52 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WwXUQOXc; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.47 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718268891; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OBp2kHYj7n2BHev/+gQZZjKm6K2+dc661niSqj6ZNLM=; b=6m4oybMMlGKeBtHEnMuNwDA2M6SYtjtitsc9RYOIpWgtPPHygkYSz2X8N2zrGZh34DGvMD LtYAxcRSu21ow2hTeGzkhkJ8FrCVJIXjYSqk8eBdVjTiytgvlupKz04mfSspFLLZWgzSjf LTW2kURBQqc6k10DVJeWsXi4RlrfI/4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718268891; a=rsa-sha256; cv=none; b=fp2hN6/KHR0DFES8XfysSOjnWY24FDIpRJOlWN6DWTR65heQgjiy0suu7a4uy4taCkSNZ1 m4q5LqTQJkF6G3KGZs851krIYkdLVzDCNhOUYZJr/hYGQoFpIwTo2Lnou3bv/+SwxKd4ti 5/+wvC57yLXD+4QwTgG8McOofUHAwzg= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WwXUQOXc; spf=pass (imf14.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.208.47 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-57c60b13a56so681420a12.0 for ; Thu, 13 Jun 2024 01:54:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718268891; x=1718873691; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=OBp2kHYj7n2BHev/+gQZZjKm6K2+dc661niSqj6ZNLM=; b=WwXUQOXc/h+rThHhBjMRV/Tj+yQ8MxN7b3xmPb6Xe+Y8/ap/0dZggzJpJXE/cUAwiw k8JXhymnRdUEBmOk5XSi6B7LHIC2Ob5KtAmMQFLCx0XrFMo35fQKGXxTNqSdTjjJB/ET uAxnFKDTrLyQrsCQbbM73jPXREp3cKTmQJf33ENVGcKbpCR1BJJvliqBnEaIj3MWlrZi ra+MKZQK6EzarbgdwVj7fvQJ5WYFZ9WCGhRhW76on6Kb6QXby4JvPvgvM7HPpCqVdYtg a36neDH82hX1D36i75fW4DeNWY7SkxrzAc1MXiduWfx+vsxcqkdeLRmRu/dTWeAyn/eq wEYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718268891; x=1718873691; h=content-transfer-encoding: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=OBp2kHYj7n2BHev/+gQZZjKm6K2+dc661niSqj6ZNLM=; b=Vxy5634v5Q03B4LWvSD6m2vMUyq2eZDggcW0ckhCUjclVHtOY2Hu9hlxLX/eUAnpql lD230+NxRp/NxqqmjlEY8aPBBL7zPAYJRwLQw3zCloAviMKpMGBQd3sQdqVkOikoAUMd JoDZ0a1A75IyHM7s4o4pHuxlINXEylaxtP9d2RTkYsQJVp9CpNsrui5VRXP+NVAH+bMl diidAlzdS+YmcViRmFq6m9/vGzo1WnUAKQgXg3zxUlPOZKkdU92XRtUpra7mhb3Utt0x v2Dug84KzeSxQO+nEbYWez9scWVs4XcgVuYpGBJSnp9YRJjzLaXfm+4Vi0Y4kkFgxZJN 3Cxg== X-Forwarded-Encrypted: i=1; AJvYcCUZ/SJ5VWoCmvXGCRRtlcM1TBNzA+osm9Qh2XlchSDhsYWgXqNPrwHJyVOrAW+wZqrVA7nG1tl/WWCX1Ll6FfxyqYA= X-Gm-Message-State: AOJu0YwJxTxs6CIcLbh+XSGrjg8n/NWqpwoP25IO8OIO1JyiC8D8vxia P40cm44EHiRJdAOqO1vCXvVPwj2e+oyIeqApBo7mi0ggxWnERvmGv/Ebrue5orPsESnvblfa4s/ ZItcp9OgIzM47gukxeLbfiP0VvVs= X-Google-Smtp-Source: AGHT+IEwoe0EZaXf2PrzoKl8chusq2h4Z4pgkoaMd1lJq7IJtqO/rZQGTBpSkdFC3XbRdmQJaT5hP993q0PSngJXOS0= X-Received: by 2002:a50:9557:0:b0:57c:740a:c4e4 with SMTP id 4fb4d7f45d1cf-57ca976ace5mr2623522a12.25.1718268890474; Thu, 13 Jun 2024 01:54:50 -0700 (PDT) MIME-Version: 1.0 References: <20240610120209.66311-1-ioworker0@gmail.com> <20240610120209.66311-3-ioworker0@gmail.com> In-Reply-To: From: Lance Yang Date: Thu, 13 Jun 2024 16:54:39 +0800 Message-ID: Subject: Re: [PATCH v7 2/4] mm/rmap: add helper to restart pgtable walk on changes To: David Hildenbrand Cc: akpm@linux-foundation.org, willy@infradead.org, sj@kernel.org, baolin.wang@linux.alibaba.com, maskray@google.com, ziy@nvidia.com, ryan.roberts@arm.com, 21cnbao@gmail.com, mhocko@suse.com, fengwei.yin@intel.com, zokeefe@google.com, shy828301@gmail.com, xiehuan09@gmail.com, libang.li@antgroup.com, wangkefeng.wang@huawei.com, songmuchun@bytedance.com, peterx@redhat.com, minchan@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4B85B100016 X-Stat-Signature: y76cjszdebqckymx43p386i14cwuwqz1 X-HE-Tag: 1718268892-683165 X-HE-Meta: U2FsdGVkX19xWYlRS9ZDaVYqnqvl1+0ygZ2tPBaQFJ+EaV6X8hwSjQ3rlSn5WKCxcVY+kiwwZehILvtFwV2+LBaR4UNgOyzJD1BwUwBB2sfcNt1uIfgKBb1/QGUrXlCfDadWZZ3Qa3ddLOXqI+grMO6Wac4p5RZlpyCUZnwKn8EJC9db3ATj2qFsiyBI+8cspE6n9U3rKEa0LrSGO/LtpeuENRShI1yN9DQRGQG8MNReb/DlU071dbFRHbEVU7Z90J6Z6rHVvF0ExBGt7egJHHCwJpRsZrfCYJE/m1kNalMKbufJUARfsrVzzTwm5WASauiErgkRIjFXnHXHoy7tU1zkWdhgnYxkQrkMmKRQ9Re2JCnAQVuP8L7PGvS9WwAyMtC7PRv3MDF7NYppw0xsiwUN0PN6lTLCAR3KZcczJT+FKlxxEH84Bhc/U+2U79NOnj3shXIiWnSmdvWQGHFSlTtjHcRFYPv72fvqhQRdyDg9d/S67/WzGDp4P0eE5d87CuxZVqGYkWvJm5CPP9m1FxfyCrPcDYiYiPQOdR4q+jtYDAnailsjcpUR1ikCX7MO6AKAvocLTye21CisVWX2BG5Og7K8M07knrGrUtD8If90jUC4HRRyPtZtOtQBtmgInNR3g0zSPHPQeUG6W0uDFZl/fbYcmW2dlv2J4nJiGvPQPGeUQopMUw3H2kb7+ozgCImzLfdmAgYObyCZfX8gWz6kiHizDD45DTePQczzr3CL0htQy22Chjv3/lzmm2txug9TusO9azNHRjoGbzS6DKkvDndn0uVTGoNOsISwCdbvbmFOM4iRdmdxnoK8i/P+cebreAxyoKVe2kdOmXVBk9o6YMr6wvYR8OKLoOOyC9Y9pqILagRFG6hLi2N8/MNeSG2I+ynVvAh96al3subfoOPRyjcxYNSF0ydC8E/9W3jpcAqVWb9cpoD7woIJC0Eeq2uJvY1ZjY6p/DiaHQX UZhW3LlM Jl8HBSxHqbF5FxPh0exY461URvR/zSuv3bcfEXFXZGPvpLrNfNdJ7/5O66CZFLggVIUVvXjvrFX7W2bJs6ryHHUfVXP9UW/enuqFzOHmqAjpdp0AIZ8RNFQTomj0E9HH6i9VsGPUfXQsYkcQfyKt6x+dhkBoX6rHEnjgNNWs0guLLs8Nyei/7ugt94LB+dTyA4TCB//mpP03l3FnPwVgiwCEB0sq+mT2nd6+6NwbEziXaCp1DSMQP/skWAJXja6EPNzoQR84/giYSvjtdbTdnO261EENG/OwbOLGU9VdJ1lkpg3Q9ZyqzA3e08G1uW2lE6Pz0LvKq6jxwdtZc1S8WvJWltw== 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: List-Subscribe: List-Unsubscribe: On Thu, Jun 13, 2024 at 4:30=E2=80=AFPM David Hildenbrand wrote: > > On 10.06.24 14:02, Lance Yang wrote: > > Introduce the page_vma_mapped_walk_restart() helper to handle scenarios > > where the page table walk needs to be restarted due to changes in the p= age > > table, such as when a PMD is split. It releases the PTL held during the > > previous walk and resets the state, allowing a new walk to start at the > > current address stored in pvmw->address. > > > > Suggested-by: David Hildenbrand > > Signed-off-by: Lance Yang > > --- > > include/linux/rmap.h | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/include/linux/rmap.h b/include/linux/rmap.h > > index 7229b9baf20d..5f18509610cc 100644 > > --- a/include/linux/rmap.h > > +++ b/include/linux/rmap.h > > @@ -710,6 +710,28 @@ static inline void page_vma_mapped_walk_done(struc= t page_vma_mapped_walk *pvmw) > > spin_unlock(pvmw->ptl); > > } > > > > +/** > > + * page_vma_mapped_walk_restart - Restart the page table walk. > > + * @pvmw: Pointer to struct page_vma_mapped_walk. > > + * > > + * It restarts the page table walk when changes occur in the page > > + * table, such as splitting a PMD. Ensures that the PTL held during > > + * the previous walk is released and resets the state to allow for > > + * a new walk starting at the current address stored in pvmw->address. > > + */ > > +static inline void > > +page_vma_mapped_walk_restart(struct page_vma_mapped_walk *pvmw) > > +{ > > + WARN_ON_ONCE(!pvmw->pmd); > > Can we have this more general, like > > WARN_ON_ONCE(!pvmw->pmd && !pvmw->pte); Sure, let=E2=80=99s make it more general. > > And then setting both to NULL below? > > > > + WARN_ON_ONCE(!pvmw->ptl); > > This is confusing: you check for ptl below. What would be clearer is > > if (likely(pvmw->ptl)) > spin_unlock(pvmw->ptl); > else > WARN_ON_ONCE(1); Will adjust as you suggested, thanks! > > > > + > > + if (pvmw->ptl) > > + spin_unlock(pvmw->ptl); > > + > > + pvmw->ptl =3D NULL; > > + pvmw->pmd =3D NULL; > > +} > > + > > bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw); > > > > /* > > I'd suggest squashing that into the next patch. Got it. Thanks, Lance > > -- > Cheers, > > David / dhildenb >