[PATCH 08/13] selftests/mm: ensure destination is hugetlb-backed in hugepage-mremap

Sayali Patil posted 13 patches 4 weeks, 1 day ago
Only 12 patches received!
There is a newer version of this series
[PATCH 08/13] selftests/mm: ensure destination is hugetlb-backed in hugepage-mremap
Posted by Sayali Patil 4 weeks, 1 day ago
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 <sayalip@linux.ibm.com>
---
 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);
 	ksft_print_msg("Map vaddr: Returned address is %p\n", vaddr);
 	if (vaddr == MAP_FAILED)
 		ksft_exit_fail_msg("mmap2: %s\n", strerror(errno));
-- 
2.52.0
Re: [PATCH 08/13] selftests/mm: ensure destination is hugetlb-backed in hugepage-mremap
Posted by Zi Yan 4 weeks, 1 day ago
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 <sayalip@linux.ibm.com>
> ---
>  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 <ziy@nvidia.com>

after you do either above.

Best Regards,
Yan, Zi