Re: [PATCH] selftests: mm: fix map_hugetlb failure on 64K page size systems

From: Nico Pache
Date: Fri Jan 19 2024 - 08:12:32 EST


NACK.

I accidentally sent an older version of this patch. Following up with V2.

On Fri, Jan 19, 2024 at 5:58 AM Nico Pache <npache@xxxxxxxxxx> wrote:
>
> On systems with 64k page size and 512M huge page sizes, the allocation
> and test succeeds but errors out at the munmap. As the comment states,
> munmap will failure if its not HUGEPAGE aligned. This is due to the
> length of the mapping being 1/2 the size of the hugepage causing the
> munmap to not be hugepage aligned. Fix this by making the mapping length
> the full hugepage if the hugepage is larger than the length of the
> mapping.
>
> Signed-off-by: Nico Pache <npache@xxxxxxxxxx>
> ---
> tools/testing/selftests/mm/map_hugetlb.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/tools/testing/selftests/mm/map_hugetlb.c b/tools/testing/selftests/mm/map_hugetlb.c
> index 193281560b61..dcb8095fcd45 100644
> --- a/tools/testing/selftests/mm/map_hugetlb.c
> +++ b/tools/testing/selftests/mm/map_hugetlb.c
> @@ -58,10 +58,16 @@ int main(int argc, char **argv)
> {
> void *addr;
> int ret;
> + size_t maplength;
> size_t length = LENGTH;
> int flags = FLAGS;
> int shift = 0;
>
> + maplength = default_huge_page_size();
> + /* mmap with fail if the length is not page */
> + if (maplength > length)
> + length = maplength;
> +
> if (argc > 1)
> length = atol(argv[1]) << 20;
> if (argc > 2) {
> --
> 2.43.0
>