From: Peter Xu <peterx@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>,
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>,
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, 7 Oct 2025 12:47:10 -0400 [thread overview]
Message-ID: <aOVEDii4HPB6outm@x1.local> (raw)
In-Reply-To: <9089d994-262f-4941-8bed-f3c6ee05a769@redhat.com>
On Tue, Oct 07, 2025 at 06:14:01PM +0200, David Hildenbrand wrote:
> > > If so, I'd prefer that rather than introducing feature-backend flags,
> > > because I want to avoid introducing another different feature set to uffd.
> > >
> >
> > I was talking about uffd_features. I thought it was being renamed to
> > flags, not modes_supported. It was pretty late when I responded.
> >
> > FWIU, David was saying we don't need both of modes and ioctl listed in
> > the uffd_ops?
>
> Right, I would have abstracted the features to clean it up and avoid using
> VM_ flags in this interface.
>
> >
> > I was thinking that we could just put the features directly as function
> > pointers in the uffd_ops and check if they are NULL or not for
> > 'support'.
> >
> > ie:
> >
> > struct vm_uffd_ops hugetlb_uffd_ops = {
> > .missing = hugetlb_handle_userfault,
This is not needed because the logic to handle userfault isn't very type
sensitive. Hugetlb is the only one that differs very lightly, but again I
think we should better take hugetlbfs as special always as of now, per all
the previous discussions on hugetlb unifications.
> > .write_protect = mwriteprotect_range,
This is not needed. WP processing is the same.
> > .minor = hugetlb_handle_userfault_minor,
We can do that, but ultimately we do almost exactly the same for all memory
types except a fetch on the page cache. IMHO this will make it awkward..
because 99% of the minor hooks will do the same thing.. OTOH, it makes
more sense to me that the hook is defined to cover what is different on the
memory type.
I'll stop commenting on the rest.
> >
> > .mfill_atomic = hugetlb_mfill_atomic_pte,
> > .mfill_atomic_continue = ...
> > .mfill_zeropage = ...
> > .mfill_poison = ...
> > .mfill_copy = NULL, /* For example */
> > };
> >
> > Then mfill_atomic_copy() becomes:
> > {
> > /*
> > * Maybe some setup, used for all mfill operations from
> > * mfill_atomic()
> > */
> >
> > ...
> >
> > dst_vma = uffd_mfill_lock()
> > uffd_ops = vma_get_uffd_ops(vma);
> > if (!uffd_ops)
> > return false;
> >
> > if (!uffd_ops->mfill_copy) /* unlikely? */
> > return false;
> >
> > return uffd_ops->mfill_copy(dst_vma,..);
> > }
> >
> > This way is_vm_hugetlb_page() never really needs to be used because the
> > function pointer already makes that distinction.
> >
> > Right now, we have checks for hugetlb through other functions that "pass
> > off to appropriate routine", and we end up translating the
> > ioctl_supports into the function call eventually, anyways.
>
> Right, it would be great to get rid of that. I recall I asked for such a
> cleanup in RFC (or was it v1).
I didn't send RFC, likely you meant this reply in v1?
https://lore.kernel.org/all/0126fa5f-b5aa-4a17-80d6-d428105e45c7@redhat.com/
I agree that another special-purpose file (like implemented by
guest_memfd) would need that. But if we could get rid of
"hugetlb"/"shmem" special-casing in userfaultfd, it would be a
rasonable independent cleanup.
Get rid of hugetlbfs is still not my goal as of in this series.
OTOH, I generalized shmem and removed shmem.h header from userfaultfd, but
that was prior versions when with uffd_copy() and it was rejected.
What should I do now to move this series forward? Could anyone provide a
solid answer?
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2025-10-07 16:47 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
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 [this message]
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=aOVEDii4HPB6outm@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox