Re: [PATCH v3 08/40] mm: add mmap action for discontiguous kernel page mapping

From: Zi Yan

Date: Fri Sep 25 2026 - 16:54:50 EST


On Thu Sep 17, 2026 at 12:22 PM EDT, Lorenzo Stoakes (ARM) wrote:
> The existing kernel page mapping mmap actions allow for partial and full
> mapping of an array of struct page pointers.
>
> However some drivers require the mapping of discontiguous ranges. Permit
> this by providing discontig_kernel_page_ops which allows a driver to
> specify how the operation should begin and how batches of pages should be
> retrieved.
>
> It uses the minimum exposed interface to do so, providing address, page
> offset and both vm_private_data state and a local private state object.
>
> ops->init can establish state for the operation, and ops->get outputs the
> pages to map and their count. Should an error arise the core unmaps the
> VMA, invoking vm_ops->close, which is therefore where any state established
> by ops->init is released.
>
> Batches may not exceed the VMA, but may map less than its full range in
> case the driver wishes to allow the user to map an area larger than the
> available data.
>
> To use it, users invoke mmap_action_map_discontig_kernel_pages() with
> initial local private state and a set of operations.
>
> Users can then use one of the provided helper functions to perform an
> action:
>
> * discontig_kernel_map_abort() - Abort and leave the mapping as it has
> been accumulated so far.
> * discontig_kernel_map_page() - Map a single page, or a compound page given
> its head page.
> * discontig_kernel_map_page_range() - Maps a struct page ** array of a
> specified count.
>
> The userland VMA tests are updated accordingly.
>
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@xxxxxxxxxx>
> ---
> include/linux/mm.h | 45 +++++++++++++++++
> include/linux/mm_types.h | 44 +++++++++++++++-
> mm/internal.h | 3 ++
> mm/memory.c | 108 ++++++++++++++++++++++++++++++++++++++--
> mm/util.c | 7 +++
> tools/testing/vma/include/dup.h | 11 +++-
> 6 files changed, 209 insertions(+), 9 deletions(-)
>
LGTM.

Acked-by: Zi Yan <ziy@xxxxxxxxxx>


--
Best Regards,
Yan, Zi