On Fri, May 08, 2026 at 04:55:22PM +0100, Kiryl Shutsemau (Meta) wrote: > PAGEMAP_SCAN already reports PAGE_IS_WRITTEN from the inverted uffd > PTE bit, targeting the UFFDIO_WRITEPROTECT workflow. UFFDIO_RWPROTECT > reuses the same PTE bit as a marker for read-write protection, but > "has been written" and "has been accessed" are distinct semantic > signals — they happen to share one PTE bit today only because the two > implementations share infrastructure. > > Give RWP its own pagemap category so the UAPI does not conflate them: > > PAGE_IS_WRITTEN reported on VM_UFFD_WP VMAs, !pte_uffd(pte) > PAGE_IS_ACCESSED reported on VM_UFFD_RWP VMAs, !pte_uffd(pte) > > Both still read the same PTE bit today, but each is scoped to the VMA > whose registered mode makes the bit meaningful. If a future > implementation moves RWP to a separate PTE bit, only PAGE_IS_ACCESSED > switches over. > > This is a UAPI narrowing. Outside VM_UFFD_WP VMAs the uffd bit is > always clear, so PAGEMAP_SCAN used to flag PAGE_IS_WRITTEN on every > present PTE there — a meaningless duplicate of PAGE_IS_PRESENT. Now > PAGE_IS_WRITTEN fires only inside VM_UFFD_WP VMAs. > > pagemap_hugetlb_category() now takes the vma like its PTE/PMD peers. > > Signed-off-by: Kiryl Shutsemau <[email protected]> > Assisted-by: Claude:claude-opus-4-6
Acked-by: Mike Rapoport (Microsoft) <[email protected]> > --- > Documentation/admin-guide/mm/pagemap.rst | 13 ++++- > fs/proc/task_mmu.c | 73 ++++++++++++++++++------ > include/uapi/linux/fs.h | 1 + > tools/include/uapi/linux/fs.h | 1 + > 4 files changed, 67 insertions(+), 21 deletions(-) -- Sincerely yours, Mike.

