| Date | Tue, 5 May 2026 12:21:40 +0530 | | Subject | Re: [PATCH v3 40/54] selftests/mm: hugetlb-mremap: add setup of HugeTLB pages | | From | Sarthak Sharma <> |
| |
Hi Mike!
On 4/29/26 2:12 AM, Mike Rapoport wrote: > From: "Mike Rapoport (Microsoft)" <rppt@kernel.org> > > hugetlb-mremap test fails if there are no free huge pages prepared by a > wrapper script. > > Add setup of HugeTLB pages to the test and make sure that the original > settings are restored on the test exit. > > Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> > --- > tools/testing/selftests/mm/hugetlb-mremap.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/mm/hugetlb-mremap.c b/tools/testing/selftests/mm/hugetlb-mremap.c > index 1c87c39780c5..09241a279ec2 100644 > --- a/tools/testing/selftests/mm/hugetlb-mremap.c > +++ b/tools/testing/selftests/mm/hugetlb-mremap.c > @@ -26,6 +26,7 @@ > #include <stdbool.h> > #include "kselftest.h" > #include "vm_util.h" > +#include "hugepage_settings.h" > > #define DEFAULT_LENGTH_MB 10UL > #define MB_TO_BYTES(x) (x * 1024 * 1024) > @@ -108,8 +109,9 @@ static void register_region_with_uffd(char *addr, size_t len) > > int main(int argc, char *argv[]) > { > + unsigned long hugepage_size; > + int ret = 0, fd, nr; > size_t length = 0; > - int ret = 0, fd; > > ksft_print_header(); > ksft_set_plan(1); > @@ -125,7 +127,14 @@ int main(int argc, char *argv[]) > else > length = DEFAULT_LENGTH_MB; > > + hugepage_size = default_huge_page_size(); > length = MB_TO_BYTES(length); > + length = (length + hugepage_size) & ~(hugepage_size - 1);
I might be missing something, but if we're trying to align length to the hugepage size, should this be:
length = (length + hugepage_size - 1) & ~(hugepage_size - 1);
like in hugetlb-mmap.c? Because the current code will add an extra hugepage if the length is already aligned.
> + nr = length / hugepage_size; > + > + if (!hugetlb_setup_default(nr)) > + ksft_exit_skip("Not enough huge pages\n"); > + > fd = memfd_create(argv[0], MFD_HUGETLB); > if (fd < 0) > ksft_exit_fail_msg("Open failed: %s\n", strerror(errno));
|