Files
linux/include/uapi/linux
Kiryl Shutsemau (Meta) 45347e3d32 userfaultfd: add UFFD_FEATURE_RWP_ASYNC for async fault resolution
Sync RWP delivers a message and blocks the faulting thread until the
handler resolves the fault.  For working-set tracking the VMM does not
need the message: it just needs to know, at scan time, which pages were
touched.  Async RWP serves that use case — the kernel restores access
in-place and the faulting thread continues without blocking.

The VMM reconstructs the access pattern after the fact via PAGEMAP_SCAN:
pages whose uffd bit is still set (inverted PAGE_IS_ACCESSED) were not
re-accessed since the last RWP cycle.

Worth calling out: async resolution upgrades writable private anon PTEs
via pte_mkwrite() when can_change_pte_writable() allows, mirroring
do_numa_page().  Without it, every re-access of an RWP'd writable page
would COW-fault a second time.

UFFD_FEATURE_RWP_ASYNC requires UFFD_FEATURE_RWP.

Link: https://lore.kernel.org/20260708111417.173443-13-kirill@shutemov.name
Signed-off-by: Kiryl Shutsemau <kas@kernel.org>
Assisted-by: Claude:claude-opus-4-6
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: James Houghton <jthoughton@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam Howlett <liam@infradead.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Sean Christopherson <seanjc@google.com>
Cc: SeongJae Park <sj@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-08-04 19:18:39 -07:00
..
2026-03-30 16:55:36 +02:00
2026-03-05 22:16:08 -05:00
2026-03-19 11:38:24 -06:00
2026-03-18 09:59:57 +00:00
2026-06-13 13:24:31 -07:00
2026-05-13 07:53:43 -06:00
2026-05-13 07:53:43 -06:00
2026-01-18 11:22:53 -05:00
2025-10-28 22:59:19 +01:00
2025-11-25 19:20:42 -08:00
2025-09-05 09:11:28 +02:00
2025-11-24 17:52:11 +01:00
2025-11-24 17:52:11 +01:00
2025-11-29 21:39:58 +09:00
2025-12-23 12:29:14 +05:30
2025-09-15 14:32:54 +02:00
2026-01-12 16:52:09 +01:00
2025-07-08 12:39:24 +02:00
2026-03-12 13:33:54 +01:00
2026-02-06 20:35:06 -08:00
2026-02-27 19:21:56 -08:00
2025-11-03 17:41:18 +01:00
2026-05-19 09:32:27 -07:00
2026-03-31 07:04:00 -06:00
2026-01-26 19:07:10 -08:00
2025-07-14 18:41:42 -07:00
2025-06-19 14:28:22 +02:00
2025-05-21 13:41:03 +02:00
2026-02-09 12:21:32 -05:00
2025-09-22 09:29:28 +01:00
2025-11-30 18:02:43 -05:00
2025-05-27 10:27:54 -04:00
2025-09-22 09:29:29 +01:00