From: Peter Xu <peterx@redhat.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Dan Williams <dan.j.williams@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
"Aneesh Kumar K . V" <aneesh.kumar@linux.ibm.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>,
Thomas Gleixner <tglx@linutronix.de>,
Vlastimil Babka <vbabka@suse.cz>,
Oscar Salvador <osalvador@suse.de>,
linuxppc-dev@lists.ozlabs.org,
Andrew Morton <akpm@linux-foundation.org>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [PATCH v3 0/8] mm/mprotect: Fix dax puds
Date: Wed, 24 Jul 2024 11:15:29 -0400 [thread overview]
Message-ID: <ZqEakeCfr3rVrUz6@x1n> (raw)
In-Reply-To: <20240715192142.3241557-1-peterx@redhat.com>
On Mon, Jul 15, 2024 at 03:21:34PM -0400, Peter Xu wrote:
> [Based on mm-unstable, commit 31334cf98dbd, July 2nd]
>
> v3:
> - Fix a build issue on i386 PAE config
> - Moved one line from patch 8 to patch 3
>
> v1: https://lore.kernel.org/r/20240621142504.1940209-1-peterx@redhat.com
> v2: https://lore.kernel.org/r/20240703212918.2417843-1-peterx@redhat.com
>
> Dax supports pud pages for a while, but mprotect on puds was missing since
> the start. This series tries to fix that by providing pud handling in
> mprotect(). The goal is to add more types of pud mappings like hugetlb or
> pfnmaps. This series paves way for it by fixing known pud entries.
>
> Considering nobody reported this until when I looked at those other types
> of pud mappings, I am thinking maybe it doesn't need to be a fix for stable
> and this may not need to be backported. I would guess whoever cares about
> mprotect() won't care 1G dax puds yet, vice versa. I hope fixing that in
> new kernels would be fine, but I'm open to suggestions.
>
> There're a few small things changed to teach mprotect work on PUDs. E.g. it
> will need to start with dropping NUMA_HUGE_PTE_UPDATES which may stop
> making sense when there can be more than one type of huge pte. OTOH, we'll
> also need to push the mmu notifiers from pmd to pud layers, which might
> need some attention but so far I think it's safe. For such details, please
> refer to each patch's commit message.
>
> The mprotect() pud process should be straightforward, as I kept it as
> simple as possible. There's no NUMA handled as dax simply doesn't support
> that. There's also no userfault involvements as file memory (even if work
> with userfault-wp async mode) will need to split a pud, so pud entry
> doesn't need to yet know userfault's existance (but hugetlb entries will;
> that's also for later).
>
> Tests
> =====
>
> What I did test:
>
> - cross-build tests that I normally cover [1]
>
> - smoke tested on x86_64 the simplest program [2] on dev_dax 1G PUD
> mprotect() using QEMU's nvdimm emulations [3] and ndctl to create
> namespaces with proper alignments, which used to throw "bad pud" but now
> it'll run through all fine. I checked sigbus happens if with illegal
> access on protected puds.
>
> - vmtests.
>
> What I didn't test:
>
> - fsdax: I wanted to also give it a shot, but only until then I noticed it
> doesn't seem to be supported (according to dax_iomap_fault(), which will
> always fallback on PUD_ORDER). I did remember it was supported before, I
> could miss something important there.. please shoot if so.
>
> - userfault wp-async: I also wanted to test userfault-wp async be able to
> split huge puds (here it's simply a clear_pud.. though), but it won't
> work for devdax anyway due to not allowed to do smaller than 1G faults in
> this case. So skip too.
>
> - Power, as no hardware on hand.
Ping - any review comments or even tests would be greatly welcomed.
I'm not sure whether this matters for anyone yet so far. I hope this still
makes sense for DAX even if this is an extremely corner case...
Just to mention the follow up users of this path:
- huge pfnmap 1G may use this, when VM_PFNMAP can be mapped with 1G too,
then we should hit similar "bad pud" here.
- hugetlb rework will use this, when we want this path to process 1G
hugetlb pages too.
The 1st user is not a must in my initial plan, as VFIO + VM use case
doesn't use mprotect(), so we can keep (1) broken together with DAX 1G
here. But for the long term we should still fix this, IMHO.
Thanks,
--
Peter Xu
WARNING: multiple messages have this Message-ID (diff)
From: Peter Xu <peterx@redhat.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Cc: Dave Jiang <dave.jiang@intel.com>,
Rik van Riel <riel@surriel.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Michael Ellerman <mpe@ellerman.id.au>,
linuxppc-dev@lists.ozlabs.org,
Matthew Wilcox <willy@infradead.org>,
Rick P Edgecombe <rick.p.edgecombe@intel.com>,
Oscar Salvador <osalvador@suse.de>,
Mel Gorman <mgorman@techsingularity.net>,
Andrew Morton <akpm@linux-foundation.org>,
Borislav Petkov <bp@alien8.de>,
Christophe Leroy <christophe.leroy@csgroup.eu>,
Huang Ying <ying.huang@intel.com>,
"Kirill A . Shutemov" <kirill@shutemov.name>,
"Aneesh Kumar K . V" <aneesh.kumar@linux.ibm.com>,
Dan Williams <dan.j.williams@intel.com>,
Thomas Gleixner <tglx@linutronix.de>,
Hugh Dickins <hughd@google.com>,
x86@kernel.org, Nicholas Piggin <npiggin@gmail.com>,
Vlastimil Babka <vbabka@suse.cz>, Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH v3 0/8] mm/mprotect: Fix dax puds
Date: Wed, 24 Jul 2024 11:15:29 -0400 [thread overview]
Message-ID: <ZqEakeCfr3rVrUz6@x1n> (raw)
In-Reply-To: <20240715192142.3241557-1-peterx@redhat.com>
On Mon, Jul 15, 2024 at 03:21:34PM -0400, Peter Xu wrote:
> [Based on mm-unstable, commit 31334cf98dbd, July 2nd]
>
> v3:
> - Fix a build issue on i386 PAE config
> - Moved one line from patch 8 to patch 3
>
> v1: https://lore.kernel.org/r/20240621142504.1940209-1-peterx@redhat.com
> v2: https://lore.kernel.org/r/20240703212918.2417843-1-peterx@redhat.com
>
> Dax supports pud pages for a while, but mprotect on puds was missing since
> the start. This series tries to fix that by providing pud handling in
> mprotect(). The goal is to add more types of pud mappings like hugetlb or
> pfnmaps. This series paves way for it by fixing known pud entries.
>
> Considering nobody reported this until when I looked at those other types
> of pud mappings, I am thinking maybe it doesn't need to be a fix for stable
> and this may not need to be backported. I would guess whoever cares about
> mprotect() won't care 1G dax puds yet, vice versa. I hope fixing that in
> new kernels would be fine, but I'm open to suggestions.
>
> There're a few small things changed to teach mprotect work on PUDs. E.g. it
> will need to start with dropping NUMA_HUGE_PTE_UPDATES which may stop
> making sense when there can be more than one type of huge pte. OTOH, we'll
> also need to push the mmu notifiers from pmd to pud layers, which might
> need some attention but so far I think it's safe. For such details, please
> refer to each patch's commit message.
>
> The mprotect() pud process should be straightforward, as I kept it as
> simple as possible. There's no NUMA handled as dax simply doesn't support
> that. There's also no userfault involvements as file memory (even if work
> with userfault-wp async mode) will need to split a pud, so pud entry
> doesn't need to yet know userfault's existance (but hugetlb entries will;
> that's also for later).
>
> Tests
> =====
>
> What I did test:
>
> - cross-build tests that I normally cover [1]
>
> - smoke tested on x86_64 the simplest program [2] on dev_dax 1G PUD
> mprotect() using QEMU's nvdimm emulations [3] and ndctl to create
> namespaces with proper alignments, which used to throw "bad pud" but now
> it'll run through all fine. I checked sigbus happens if with illegal
> access on protected puds.
>
> - vmtests.
>
> What I didn't test:
>
> - fsdax: I wanted to also give it a shot, but only until then I noticed it
> doesn't seem to be supported (according to dax_iomap_fault(), which will
> always fallback on PUD_ORDER). I did remember it was supported before, I
> could miss something important there.. please shoot if so.
>
> - userfault wp-async: I also wanted to test userfault-wp async be able to
> split huge puds (here it's simply a clear_pud.. though), but it won't
> work for devdax anyway due to not allowed to do smaller than 1G faults in
> this case. So skip too.
>
> - Power, as no hardware on hand.
Ping - any review comments or even tests would be greatly welcomed.
I'm not sure whether this matters for anyone yet so far. I hope this still
makes sense for DAX even if this is an extremely corner case...
Just to mention the follow up users of this path:
- huge pfnmap 1G may use this, when VM_PFNMAP can be mapped with 1G too,
then we should hit similar "bad pud" here.
- hugetlb rework will use this, when we want this path to process 1G
hugetlb pages too.
The 1st user is not a must in my initial plan, as VFIO + VM use case
doesn't use mprotect(), so we can keep (1) broken together with DAX 1G
here. But for the long term we should still fix this, IMHO.
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2024-07-24 15:16 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-15 19:21 [PATCH v3 0/8] mm/mprotect: Fix dax puds Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 1/8] mm/dax: Dump start address in fault handler Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-31 12:04 ` David Hildenbrand
2024-07-31 12:04 ` David Hildenbrand
2024-08-02 22:43 ` Peter Xu
2024-08-02 22:43 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 2/8] mm/mprotect: Remove NUMA_HUGE_PTE_UPDATES Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-31 12:18 ` David Hildenbrand
2024-07-31 12:18 ` David Hildenbrand
2024-08-04 15:06 ` Peter Xu
2024-08-04 15:06 ` Peter Xu
2024-08-06 13:02 ` David Hildenbrand
2024-08-06 13:02 ` David Hildenbrand
2024-08-06 16:26 ` Peter Xu
2024-08-06 16:26 ` Peter Xu
2024-08-06 16:32 ` David Hildenbrand
2024-08-06 16:32 ` David Hildenbrand
2024-08-06 16:51 ` Peter Xu
2024-08-06 16:51 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 3/8] mm/mprotect: Push mmu notifier to PUDs Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 4/8] mm/powerpc: Add missing pud helpers Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 5/8] mm/x86: Make pud_leaf() only cares about PSE bit Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-31 12:22 ` David Hildenbrand
2024-07-31 12:22 ` David Hildenbrand
2024-07-15 19:21 ` [PATCH v3 6/8] mm/x86: arch_check_zapped_pud() Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-31 12:23 ` David Hildenbrand
2024-07-31 12:23 ` David Hildenbrand
2024-07-15 19:21 ` [PATCH v3 7/8] mm/x86: Add missing pud helpers Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-15 19:21 ` [PATCH v3 8/8] mm/mprotect: fix dax pud handlings Peter Xu
2024-07-15 19:21 ` Peter Xu
2024-07-25 18:29 ` James Houghton
2024-07-25 18:29 ` James Houghton
2024-07-25 22:41 ` Peter Xu
2024-07-25 22:41 ` Peter Xu
2024-07-26 0:23 ` James Houghton
2024-07-26 0:23 ` James Houghton
2024-07-26 11:56 ` Peter Xu
2024-07-26 11:56 ` Peter Xu
2024-07-15 20:00 ` [PATCH v3 0/8] mm/mprotect: Fix dax puds Peter Xu
2024-07-15 20:00 ` Peter Xu
2024-07-24 15:15 ` Peter Xu [this message]
2024-07-24 15:15 ` 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=ZqEakeCfr3rVrUz6@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=hughd@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.