Re: [PATCH 6.1.y] selftests/mm: Move default_huge_page_size to vm_util.c

Lance Yang
2025-10-22T06:01:36Z

+Cc: Greg

On 2025/10/22 13:51, Leon Hwang wrote:
> Fix the build error:
>
> map_hugetlb.c: In function 'main':
> map_hugetlb.c:79:25: warning: implicit declaration of function 'default_huge_page_size' [-Wimplicit-function-declaration]
> 79 | hugepage_size = default_huge_page_size();
> | ^~~~~~~~~~~~~~~~~~~~~~
> /usr/bin/ld: /tmp/ccYOogvJ.o: in function 'main':
> map_hugetlb.c:(.text+0x114): undefined reference to 'default_huge_page_size'
>
> According to the latest selftests, 'default_huge_page_size' has been
> moved to 'vm_util.c'. So fix the error by the same way.
>
> Reviewed-by: Lance Yang <lance.yang@linux.dev>
> Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
> ---
> tools/testing/selftests/vm/Makefile | 1 +
> tools/testing/selftests/vm/userfaultfd.c | 24 ------------------------
> tools/testing/selftests/vm/vm_util.c | 21 +++++++++++++++++++++
> tools/testing/selftests/vm/vm_util.h | 1 +
> 4 files changed, 23 insertions(+), 24 deletions(-)
>
> diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
> index 192ea3725c5c..ed90deebef0d 100644
> --- a/tools/testing/selftests/vm/Makefile
> +++ b/tools/testing/selftests/vm/Makefile
> @@ -100,6 +100,7 @@ $(OUTPUT)/madv_populate: vm_util.c
> $(OUTPUT)/soft-dirty: vm_util.c
> $(OUTPUT)/split_huge_page_test: vm_util.c
> $(OUTPUT)/userfaultfd: vm_util.c
> +$(OUTPUT)/map_hugetlb: vm_util.c
>
> ifeq ($(MACHINE),x86_64)
> BINARIES_32 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_32))
> diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c
> index 297f250c1d95..4751b28eba18 100644
> --- a/tools/testing/selftests/vm/userfaultfd.c
> +++ b/tools/testing/selftests/vm/userfaultfd.c
> @@ -1674,30 +1674,6 @@ static int userfaultfd_stress(void)
> || userfaultfd_events_test() || userfaultfd_minor_test();
> }
>
> -/*
> - * Copied from mlock2-tests.c
> - */
> -unsigned long default_huge_page_size(void)
> -{
> - unsigned long hps = 0;
> - char *line = NULL;
> - size_t linelen = 0;
> - FILE *f = fopen("/proc/meminfo", "r");
> -
> - if (!f)
> - return 0;
> - while (getline(&line, &linelen, f) > 0) {
> - if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) {
> - hps <<= 10;
> - break;
> - }
> - }
> -
> - free(line);
> - fclose(f);
> - return hps;
> -}
> -
> static void set_test_type(const char *type)
> {
> if (!strcmp(type, "anon")) {
> diff --git a/tools/testing/selftests/vm/vm_util.c b/tools/testing/selftests/vm/vm_util.c
> index fc5743bc1283..613cc61602c9 100644
> --- a/tools/testing/selftests/vm/vm_util.c
> +++ b/tools/testing/selftests/vm/vm_util.c
> @@ -161,6 +161,27 @@ bool check_huge_shmem(void *addr, int nr_hpages, uint64_t hpage_size)
> return __check_huge(addr, "ShmemPmdMapped:", nr_hpages, hpage_size);
> }
>
> +unsigned long default_huge_page_size(void)
> +{
> + unsigned long hps = 0;
> + char *line = NULL;
> + size_t linelen = 0;
> + FILE *f = fopen("/proc/meminfo", "r");
> +
> + if (!f)
> + return 0;
> + while (getline(&line, &linelen, f) > 0) {
> + if (sscanf(line, "Hugepagesize: %lu kB", &hps) == 1) {
> + hps <<= 10;
> + break;
> + }
> + }
> +
> + free(line);
> + fclose(f);
> + return hps;
> +}
> +
> static bool check_vmflag(void *addr, const char *flag)
> {
> char buffer[MAX_LINE_LENGTH];
> diff --git a/tools/testing/selftests/vm/vm_util.h b/tools/testing/selftests/vm/vm_util.h
> index 470f85fe9594..a4439db0d6f8 100644
> --- a/tools/testing/selftests/vm/vm_util.h
> +++ b/tools/testing/selftests/vm/vm_util.h
> @@ -11,4 +11,5 @@ uint64_t read_pmd_pagesize(void);
> bool check_huge_anon(void *addr, int nr_hpages, uint64_t hpage_size);
> bool check_huge_file(void *addr, int nr_hpages, uint64_t hpage_size);
> bool check_huge_shmem(void *addr, int nr_hpages, uint64_t hpage_size);
> +unsigned long default_huge_page_size(void);
> bool softdirty_supported(void);