From: Peter Xu <peterx@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: James Houghton <jthoughton@google.com>,
David Hildenbrand <david@redhat.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
linux-mm@kvack.org,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dave Jiang <dave.jiang@intel.com>,
x86@kernel.org, Hugh Dickins <hughd@google.com>,
Matthew Wilcox <willy@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Huang Ying <ying.huang@intel.com>,
Rik van Riel <riel@surriel.com>,
Nicholas Piggin <npiggin@gmail.com>,
Borislav Petkov <bp@alien8.de>,
"Kirill A . Shutemov" <kirill@shutemov.name>,
Dan Williams <dan.j.williams@intel.com>,
Vlastimil Babka <vbabka@suse.cz>,
Oscar Salvador <osalvador@suse.de>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
"Aneesh Kumar K . V" <aneesh.kumar@linux.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [PATCH v4 4/7] mm/x86: Make pud_leaf() only care about PSE bit
Date: Thu, 8 Aug 2024 10:54:19 -0400 [thread overview]
Message-ID: <ZrTcGxANpcvwp1qt@x1n> (raw)
In-Reply-To: <87bk240y8h.ffs@tglx>
On Thu, Aug 08, 2024 at 12:22:38AM +0200, Thomas Gleixner wrote:
> On Wed, Aug 07 2024 at 15:48, Peter Xu wrote:
> > An entry should be reported as PUD leaf even if it's PROT_NONE, in which
> > case PRESENT bit isn't there. I hit bad pud without this when testing dax
> > 1G on zapping a PROT_NONE PUD.
>
> That does not qualify as a change log. What you hit is irrelevant unless
> you explain the actual underlying problem. See Documentation/process/
> including the TIP documentation.
Firstly, thanks a lot for the reviews.
I thought the commit message explained exactly what is the underlying
problem, no?
The problem is even if PROT_NONE, as long as the PSE bit is set on the PUD
it should be treated as a PUD leaf. Currently, the code will return
pud_leaf()==false for those PROT_NONE PUD entries, and IMHO that is wrong.
This patch wants to make it right. I still think that's mostly what I put
there in the commit message..
Would you please suggest something so I can try to make it better,
otherwise? Or it'll be helpful too if you could point out which part of
the two documentations I should reference.
>
> > diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
> > index e39311a89bf4..a2a3bd4c1bda 100644
> > --- a/arch/x86/include/asm/pgtable.h
> > +++ b/arch/x86/include/asm/pgtable.h
> > @@ -1078,8 +1078,7 @@ static inline pmd_t *pud_pgtable(pud_t pud)
> > #define pud_leaf pud_leaf
> > static inline bool pud_leaf(pud_t pud)
> > {
> > - return (pud_val(pud) & (_PAGE_PSE | _PAGE_PRESENT)) ==
> > - (_PAGE_PSE | _PAGE_PRESENT);
> > + return pud_val(pud) & _PAGE_PSE;
> > }
>
> And the changelog does not explain why this change is not affecting any
> existing user of pud_leaf().
That's what I want to do: I want to affect them..
And IMHO it's mostly fine before because mprotect() is broken with 1g
anyway, and I guess nobody managed to populate any pud entry with PROT_NONE
on dax 1g before, and that's what this whole series is trying to fix.
Thanks,
--
Peter Xu
WARNING: multiple messages have this Message-ID (diff)
From: Peter Xu <peterx@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
"Aneesh Kumar K . V" <aneesh.kumar@linux.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Oscar Salvador <osalvador@suse.de>,
Dan Williams <dan.j.williams@intel.com>,
James Houghton <jthoughton@google.com>,
Matthew Wilcox <willy@infradead.org>,
Nicholas Piggin <npiggin@gmail.com>,
Rik van Riel <riel@surriel.com>,
Dave Jiang <dave.jiang@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
x86@kernel.org, Ingo Molnar <mingo@redhat.com>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
"Kirill A . Shutemov" <kirill@shutemov.name>,
linuxppc-dev@lists.ozlabs.org,
Mel Gorman <mgorman@techsingularity.net>,
Hugh Dickins <hughd@google.com>, Borislav Petkov <bp@alien8.de>,
David Hildenbrand <david@redhat.com>,
Vlastimil Babka <vbabka@suse.cz>,
Dave Hansen <dave.hansen@linux.intel.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Huang Ying <ying.huang@intel.com>
Subject: Re: [PATCH v4 4/7] mm/x86: Make pud_leaf() only care about PSE bit
Date: Thu, 8 Aug 2024 10:54:19 -0400 [thread overview]
Message-ID: <ZrTcGxANpcvwp1qt@x1n> (raw)
In-Reply-To: <87bk240y8h.ffs@tglx>
On Thu, Aug 08, 2024 at 12:22:38AM +0200, Thomas Gleixner wrote:
> On Wed, Aug 07 2024 at 15:48, Peter Xu wrote:
> > An entry should be reported as PUD leaf even if it's PROT_NONE, in which
> > case PRESENT bit isn't there. I hit bad pud without this when testing dax
> > 1G on zapping a PROT_NONE PUD.
>
> That does not qualify as a change log. What you hit is irrelevant unless
> you explain the actual underlying problem. See Documentation/process/
> including the TIP documentation.
Firstly, thanks a lot for the reviews.
I thought the commit message explained exactly what is the underlying
problem, no?
The problem is even if PROT_NONE, as long as the PSE bit is set on the PUD
it should be treated as a PUD leaf. Currently, the code will return
pud_leaf()==false for those PROT_NONE PUD entries, and IMHO that is wrong.
This patch wants to make it right. I still think that's mostly what I put
there in the commit message..
Would you please suggest something so I can try to make it better,
otherwise? Or it'll be helpful too if you could point out which part of
the two documentations I should reference.
>
> > diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
> > index e39311a89bf4..a2a3bd4c1bda 100644
> > --- a/arch/x86/include/asm/pgtable.h
> > +++ b/arch/x86/include/asm/pgtable.h
> > @@ -1078,8 +1078,7 @@ static inline pmd_t *pud_pgtable(pud_t pud)
> > #define pud_leaf pud_leaf
> > static inline bool pud_leaf(pud_t pud)
> > {
> > - return (pud_val(pud) & (_PAGE_PSE | _PAGE_PRESENT)) ==
> > - (_PAGE_PSE | _PAGE_PRESENT);
> > + return pud_val(pud) & _PAGE_PSE;
> > }
>
> And the changelog does not explain why this change is not affecting any
> existing user of pud_leaf().
That's what I want to do: I want to affect them..
And IMHO it's mostly fine before because mprotect() is broken with 1g
anyway, and I guess nobody managed to populate any pud entry with PROT_NONE
on dax 1g before, and that's what this whole series is trying to fix.
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2024-08-08 14:55 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-07 19:48 [PATCH v4 0/7] mm/mprotect: Fix dax puds Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 19:48 ` [PATCH v4 1/7] mm/dax: Dump start address in fault handler Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 19:48 ` [PATCH v4 2/7] mm/mprotect: Push mmu notifier to PUDs Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-08 15:33 ` Sean Christopherson
2024-08-08 15:33 ` Sean Christopherson
2024-08-08 21:21 ` Peter Xu
2024-08-08 21:21 ` Peter Xu
2024-08-08 21:31 ` Sean Christopherson
2024-08-08 21:31 ` Sean Christopherson
2024-08-08 21:47 ` Peter Xu
2024-08-08 21:47 ` Peter Xu
2024-08-08 22:45 ` Sean Christopherson
2024-08-08 22:45 ` Sean Christopherson
2024-08-07 19:48 ` [PATCH v4 3/7] mm/powerpc: Add missing pud helpers Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 19:48 ` [PATCH v4 4/7] mm/x86: Make pud_leaf() only care about PSE bit Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 22:22 ` Thomas Gleixner
2024-08-07 22:22 ` Thomas Gleixner
2024-08-08 14:54 ` Peter Xu [this message]
2024-08-08 14:54 ` Peter Xu
2024-08-09 12:08 ` Thomas Gleixner
2024-08-09 12:08 ` Thomas Gleixner
2024-08-09 13:53 ` Peter Xu
2024-08-09 13:53 ` Peter Xu
2024-08-07 19:48 ` [PATCH v4 5/7] mm/x86: arch_check_zapped_pud() Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 22:28 ` Thomas Gleixner
2024-08-07 22:28 ` Thomas Gleixner
2024-08-08 15:49 ` Peter Xu
2024-08-08 15:49 ` Peter Xu
2024-08-08 20:45 ` David Hildenbrand
2024-08-08 20:45 ` David Hildenbrand
2024-08-07 19:48 ` [PATCH v4 6/7] mm/x86: Add missing pud helpers Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 22:37 ` Thomas Gleixner
2024-08-07 22:37 ` Thomas Gleixner
2024-08-08 20:25 ` Peter Xu
2024-08-08 20:25 ` Peter Xu
2024-08-07 19:48 ` [PATCH v4 7/7] mm/mprotect: fix dax pud handlings Peter Xu
2024-08-07 19:48 ` Peter Xu
2024-08-07 21:17 ` [PATCH v4 0/7] mm/mprotect: Fix dax puds Andrew Morton
2024-08-07 21:17 ` Andrew Morton
2024-08-07 21:34 ` Peter Xu
2024-08-07 21:34 ` Peter Xu
2024-08-07 21:44 ` Andrew Morton
2024-08-07 21:44 ` Andrew Morton
2024-08-08 14:34 ` Peter Xu
2024-08-08 14:34 ` Peter Xu
2024-08-07 21:23 ` Andrew Morton
2024-08-07 21:23 ` Andrew Morton
2024-08-07 21:47 ` Peter Xu
2024-08-07 21:47 ` 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=ZrTcGxANpcvwp1qt@x1n \
--to=peterx@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.ibm.com \
--cc=bp@alien8.de \
--cc=christophe.leroy@csgroup.eu \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=jthoughton@google.com \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mgorman@techsingularity.net \
--cc=mingo@redhat.com \
--cc=npiggin@gmail.com \
--cc=osalvador@suse.de \
--cc=rick.p.edgecombe@intel.com \
--cc=riel@surriel.com \
--cc=tglx@linutronix.de \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=x86@kernel.org \
--cc=ying.huang@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.