Re: [PATCH] mm/hmm.c: Allow VM_MIXEDMAP to work with hmm_range_fault

From: Jason Gunthorpe
Date: Fri Nov 05 2021 - 08:26:03 EST


On Thu, Nov 04, 2021 at 12:20:01PM +1100, Alistair Popple wrote:
> hmm_range_fault() can be used instead of get_user_pages() for devices
> which allow faulting however unlike get_user_pages() it will return an
> error when used on a VM_MIXEDMAP range.
>
> To make hmm_range_fault() more closely match get_user_pages() remove
> this restriction. This requires dealing with the !ARCH_HAS_PTE_SPECIAL
> case in hmm_vma_handle_pte(). Rather than replicating the logic of
> vm_normal_page() call it directly and do a check for the zero pfn
> similar to what get_user_pages() currently does.
>
> Also add a test to hmm selftest to verify functionality.

Please add a fixes line

> Signed-off-by: Alistair Popple <apopple@xxxxxxxxxx>
> ---
> lib/test_hmm.c | 24 +++++++++++++++
> mm/hmm.c | 5 +--
> tools/testing/selftests/vm/hmm-tests.c | 42 ++++++++++++++++++++++++++
> 3 files changed, 69 insertions(+), 2 deletions(-)

Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx>

Jason