From: Peter Xu <peterx@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Axel Rasmussen <axelrasmussen@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
James Houghton <jthoughton@google.com>,
Nikita Kalyazin <kalyazin@amazon.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Ujwal Kundur <ujwal.kundur@gmail.com>,
Mike Rapoport <rppt@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
Michal Hocko <mhocko@suse.com>,
Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>,
Hugh Dickins <hughd@google.com>,
Suren Baghdasaryan <surenb@google.com>
Subject: Re: [PATCH v3 1/4] mm: Introduce vm_uffd_ops API
Date: Tue, 30 Sep 2025 16:35:38 -0400 [thread overview]
Message-ID: <aNw_GrZsql_M04T0@x1.local> (raw)
In-Reply-To: <f409cbe7-7865-45ab-af9a-6d5108bc5ad4@redhat.com>
On Tue, Sep 30, 2025 at 09:19:05PM +0200, David Hildenbrand wrote:
> On 30.09.25 20:48, Peter Xu wrote:
> > On Tue, Sep 30, 2025 at 11:36:53AM +0200, David Hildenbrand wrote:
> > > > +/* VMA userfaultfd operations */
> > > > +struct vm_uffd_ops {
> > > > + /**
> > > > + * @uffd_features: features supported in bitmask.
> > > > + *
> > > > + * When the ops is defined, the driver must set non-zero features
> > > > + * to be a subset (or all) of: VM_UFFD_MISSING|WP|MINOR.
> > > > + *
> > > > + * NOTE: VM_UFFD_MISSING is still only supported under mm/ so far.
> > > > + */
> > > > + unsigned long uffd_features;
> > >
> > > This variable name is a bit confusing , because it's all about vma flags,
> > > not uffd features. Just reading the variable, I would rather connect it to
> > > things like UFFD_FEATURE_WP_UNPOPULATED.
> > >
> > > As currently used for VM flags, maybe you should call this
> > >
> > > unsigned long uffd_vm_flags;
> > >
> > > or sth like that.
> >
> > Indeed it's slightly confusing. However uffd_vm_flags is confusing in
> > another way, where it seems to imply some flags similar to vm_flags that is
> > prone to change.
> >
> > How about uffd_vm_flags_supported / uffd_modes_supported?
>
> The former would make things clearer when we are at least not talking about
> uffd features.
I'll go with it.
>
> >
> > >
> > > I briefly wondered whether we could use actual UFFD_FEATURE_* here, but they
> > > are rather unsuited for this case here (e.g., different feature flags for
> > > hugetlb support/shmem support etc).
> > >
> > > But reading "uffd_ioctls" below, can't we derive the suitable vma flags from
> > > the supported ioctls?
> > >
> > > _UFFDIO_COPY | _UFDIO_ZEROPAGE -> VM_UFFD_MISSING
> > > _UFFDIO_WRITEPROTECT -> VM_UFFD_WP
> > > _UFFDIO_CONTINUE -> VM_UFFD_MINOR
> >
> > Yes we can deduce that, but it'll be unclear then when one stares at a
> > bunch of ioctls and cannot easily digest the modes the memory type
> > supports. Here, the modes should be the most straightforward way to
> > describe the capability of a memory type.
>
> I rather dislike the current split approach between vm-flags and ioctls.
>
> I briefly thought about abstracting it for internal purposes further and
> just have some internal backend ("memory type") flags.
>
> UFFD_BACKEND_FEAT_MISSING -> _UFFDIO_COPY and VM_UFFD_MISSING
> UFFD_BACKEND_FEAT_ZEROPAGE -> _UFDIO_ZEROPAGE
> UFFD_BACKEND_FEAT_WP -> _UFFDIO_WRITEPROTECT and VM_UFFD_WP
> UFFD_BACKEND_FEAT_MINOR -> _UFFDIO_CONTINUE and VM_UFFD_MINOR
> UFFD_BACKEND_FEAT_POISON -> _UFFDIO_POISON
This layer of mapping can be helpful to some, but maybe confusing to
others.. who is familiar with existing userfaultfd definitions.
> >
> > If hugetlbfs supported ZEROPAGE, then we can deduce the ioctls the other
> > way round, and we can drop the uffd_ioctls. However we need the ioctls now
> > for hugetlbfs to make everything generic.
>
> POISON is not a VM_ flag, so that wouldn't work completely, right?
Logically speaking, POISON should be meaningful if MISSING|MINOR is
supported. However, in reality, POISON should always be supported across
all types..
>
> As a side note, hugetlbfs support for ZEROPAGE should be fairly easy:
> similar to shmem support, simply allocate a zeroed hugetlb folio.
IMHO it'll be good if we do not introduce ZEROPAGE only because we want to
remove some flags.. We could be introducing dead codes that nobody uses.
I think it'll be good if we put that as a separate discussion, and define
the vm_uffd_ops based on the current situation.
>
> >
> > Do you mind I still keep it as-is?
>
> I would prefer if we find a way to not have this dependency between both
> feature/ioctl thingies. It just looks rather odd.
>
> But let's hear if there are other opinions.
Sure.
--
Peter Xu
next prev parent reply other threads:[~2025-09-30 20:35 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-26 21:16 [PATCH v3 0/4] mm/userfaultfd: modulize memory types Peter Xu
2025-09-26 21:16 ` [PATCH v3 1/4] mm: Introduce vm_uffd_ops API Peter Xu
2025-09-30 9:36 ` David Hildenbrand
2025-09-30 10:07 ` Mike Rapoport
2025-09-30 10:18 ` David Hildenbrand
2025-09-30 18:39 ` Peter Xu
2025-09-30 18:48 ` Peter Xu
2025-09-30 19:19 ` David Hildenbrand
2025-09-30 20:35 ` Peter Xu [this message]
2025-10-01 13:58 ` David Hildenbrand
2025-10-01 14:35 ` Peter Xu
2025-10-01 14:39 ` David Hildenbrand
2025-10-03 14:02 ` Peter Xu
2025-10-06 13:38 ` David Hildenbrand
2025-10-06 19:06 ` Liam R. Howlett
2025-10-06 21:02 ` Peter Xu
2025-10-07 3:31 ` Liam R. Howlett
2025-10-07 13:51 ` Peter Xu
2025-10-07 16:03 ` Liam R. Howlett
2025-10-07 16:14 ` David Hildenbrand
2025-10-07 16:47 ` Peter Xu
2025-10-07 18:46 ` Liam R. Howlett
2025-10-07 19:41 ` Peter Xu
2025-10-07 20:23 ` David Hildenbrand
2025-10-07 20:25 ` Liam R. Howlett
2025-10-07 20:40 ` Peter Xu
2025-09-26 21:16 ` [PATCH v3 2/4] mm/shmem: Support " Peter Xu
2025-09-26 21:16 ` [PATCH v3 3/4] mm/hugetlb: " Peter Xu
2025-09-26 21:16 ` [PATCH v3 4/4] mm: Apply vm_uffd_ops API to core mm Peter Xu
2025-09-30 9:23 ` David Hildenbrand
2025-09-30 18:52 ` Peter Xu
2025-09-30 19:49 ` [PATCH v3 0/4] mm/userfaultfd: modulize memory types Liam R. Howlett
2025-09-30 20:45 ` 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=aNw_GrZsql_M04T0@x1.local \
--to=peterx@redhat.com \
--cc=Liam.Howlett@oracle.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=jthoughton@google.com \
--cc=kalyazin@amazon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=ujwal.kundur@gmail.com \
--cc=vbabka@suse.cz \
/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.