From: Jason Gunthorpe <jgg@nvidia.com>
To: peterx@redhat.com
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org,
Andrew Morton <akpm@linux-foundation.org>,
Muchun Song <muchun.song@linux.dev>,
Matthew Wilcox <willy@infradead.org>,
Mike Rapoport <rppt@kernel.org>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
x86@kernel.org, sparclinux@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Naoya Horiguchi <naoya.horiguchi@nec.com>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>
Subject: Re: [PATCH RFC 04/13] mm/x86: Change pXd_huge() behavior to exclude swap entries
Date: Thu, 7 Mar 2024 16:16:55 -0400 [thread overview]
Message-ID: <20240307201655.GF9179@nvidia.com> (raw)
In-Reply-To: <20240306104147.193052-5-peterx@redhat.com>
On Wed, Mar 06, 2024 at 06:41:38PM +0800, peterx@redhat.com wrote:
> From: Peter Xu <peterx@redhat.com>
>
> This patch partly reverts below commits:
>
> 3a194f3f8ad0 ("mm/hugetlb: make pud_huge() and follow_huge_pud() aware of non-present pud entry")
> cbef8478bee5 ("mm/hugetlb: pmd_huge() returns true for non-present hugepage")
>
> Right now, pXd_huge() definition across kernel is unclear. We have two
> groups that think differently on swap entries:
>
> - x86/sparc: Allow pXd_huge() to accept swap entries
> - all the rest: Doesn't allow pXd_huge() to accept swap entries
>
> This is so confusing. Since the sparc helpers seem to be added in 2016,
> which is after x86's (2015), so sparc could have followed a trend. x86
> proposed such swap handling in 2015 to resolve hugetlb swap entries hit in
> GUP, but now GUP guards swap entries with !pXd_present() in all layers so
> we should be safe.
>
> We should define this API properly, one way or another, rather than keep
> them defined differently across archs.
>
> Gut feeling tells me that pXd_huge() shouldn't include swap entries, and it
> turns out that I am not the only one thinking so, the question was raised
> when the current pmd_huge() for x86 was proposed by Ville Syrjälä:
>
> https://lore.kernel.org/all/Y2WQ7I4LXh8iUIRd@intel.com/
>
> I might also be missing something obvious, but why is it even necessary
> to treat PRESENT==0+PSE==0 as a huge entry?
>
> It is also questioned when Jason Gunthorpe reviewed the other patchset on
> swap entry handlings:
>
> https://lore.kernel.org/all/20240221125753.GQ13330@nvidia.com/
>
> Revert its meaning back to original. It shouldn't have any functional
> change as we should be ready with guards on !pXd_present() explicitly
> everywhere.
>
> Note that I also dropped the "#if CONFIG_PGTABLE_LEVELS > 2", it was there
> probably because it was breaking things when 3a194f3f8ad0 was proposed,
> according to the report here:
>
> https://lore.kernel.org/all/Y2LYXItKQyaJTv8j@intel.com/
>
> Now we shouldn't need that.
>
> Instead of reverting to _PAGE_PSE raw check, leverage pXd_leaf().
>
> Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: x86@kernel.org
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> arch/x86/mm/hugetlbpage.c | 18 ++++--------------
> 1 file changed, 4 insertions(+), 14 deletions(-)
I think this is the right thing to do, callers should be more directly
sensitive to swap entries not back into it indirectly from a helper
like this.
Jason
next prev parent reply other threads:[~2024-03-07 20:17 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-06 10:41 [PATCH RFC 00/13] mm/treewide: Remove pXd_huge() API peterx
2024-03-06 10:41 ` [PATCH RFC 01/13] mm/hmm: Process pud swap entry without pud_huge() peterx
2024-03-07 18:12 ` Jason Gunthorpe
2024-03-08 6:50 ` Peter Xu
2024-03-06 10:41 ` [PATCH RFC 02/13] mm/gup: Cache p4d in follow_p4d_mask() peterx
2024-03-06 10:41 ` [PATCH RFC 03/13] mm/gup: Check p4d presence before going on peterx
2024-03-07 20:08 ` Jason Gunthorpe
2024-03-06 10:41 ` [PATCH RFC 04/13] mm/x86: Change pXd_huge() behavior to exclude swap entries peterx
2024-03-07 20:16 ` Jason Gunthorpe [this message]
2024-03-06 10:41 ` [PATCH RFC 05/13] mm/sparc: " peterx
2024-03-06 10:41 ` [PATCH RFC 06/13] mm/arm: Use macros to define pmd/pud helpers peterx
2024-03-06 10:41 ` [PATCH RFC 07/13] mm/arm: Redefine pmd_huge() with pmd_leaf() peterx
2024-03-06 10:41 ` [PATCH RFC 08/13] mm/arm64: Merge pXd_huge() and pXd_leaf() definitions peterx
2024-03-06 10:41 ` [PATCH RFC 09/13] mm/powerpc: Redefine pXd_huge() with pXd_leaf() peterx
2024-03-06 12:56 ` Michael Ellerman
2024-03-07 3:05 ` Peter Xu
2024-03-06 10:41 ` [PATCH RFC 10/13] mm/gup: Merge pXd huge mapping checks peterx
2024-03-07 20:19 ` Jason Gunthorpe
2024-03-06 10:41 ` [PATCH RFC 11/13] mm/treewide: Replace pXd_huge() with pXd_leaf() peterx
2024-03-06 10:41 ` [PATCH RFC 12/13] mm/treewide: Remove pXd_huge() peterx
2024-03-06 10:41 ` [PATCH RFC 13/13] mm: Document pXd_leaf() API peterx
2024-03-08 15:20 ` Jason Gunthorpe
2024-03-11 9:58 ` [PATCH RFC 00/13] mm/treewide: Remove pXd_huge() API Christophe Leroy
2024-03-12 20:01 ` Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240307201655.GF9179@nvidia.com \
--to=jgg@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=christophe.leroy@csgroup.eu \
--cc=dave.hansen@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@redhat.com \
--cc=muchun.song@linux.dev \
--cc=naoya.horiguchi@nec.com \
--cc=peterx@redhat.com \
--cc=rppt@kernel.org \
--cc=sparclinux@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).