On 10 Mar 2026, at 5:49, Sayali Patil wrote:

> The hugepage-mremap selftest reserves the destination address using a
> anonymous base-page mapping before calling mremap() with MREMAP_FIXED,
> while the source region is hugetlb-backed.
>
> When remapping a hugetlb mapping into a base-page VMA may fail with:
>
>     mremap: Device or resource busy
>
> This is observed on powerpc hash MMU systems where slice constraints
> and page size incompatibilities prevent the remap.
>
> Ensure the destination region is created using MAP_HUGETLB so that both
> source and destination VMAs are hugetlb-backed and compatible. Also add
> MAP_POPULATE to the destination mapping to prefault hugepages,
> matching the behaviour used for other hugetlb mappiing in the test and
> ensuring deterministic behaviour.
>
> This ensures the test reliably exercises hugetlb mremap instead of
> failing due to VMA type mismatch.
>
> Fixes: 12b613206474 ("mm, hugepages: add hugetlb vma mremap() test")
> Signed-off-by: Sayali Patil <[email protected]>
> ---
>  tools/testing/selftests/mm/hugepage-mremap.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/hugepage-mremap.c 
> b/tools/testing/selftests/mm/hugepage-mremap.c
> index e611249080d6..9558515c282d 100644
> --- a/tools/testing/selftests/mm/hugepage-mremap.c
> +++ b/tools/testing/selftests/mm/hugepage-mremap.c
> @@ -136,8 +136,8 @@ int main(int argc, char *argv[])
>               ksft_exit_fail_msg("mmap3: %s\n", strerror(errno));
>
>       suggested_addr = 0x7faa40000000;
> -     void *vaddr =
> -             mmap((void *)suggested_addr, length, PROTECTION, FLAGS, -1, 0);
> +     void *vaddr = mmap((void *)suggested_addr, length, PROTECTION,
> +                     MAP_HUGETLB | MAP_SHARED | MAP_POPULATE, fd, 0);

FLAGS is only used here, why not change the definition of FLAGS
or remove FLAGS along with your change?

Feel free to add

Acked-by: Zi Yan <[email protected]>

after you do either above.

Best Regards,
Yan, Zi

Reply via email to