Re: Kunit: kernel/resource.c: In function 'gfr_start': include/linux/mm.h:101:35: error: 'MAX_PHYSMEM_BITS' undeclared (first use in this function)

From: Huang, Ying
Date: Tue Sep 10 2024 - 21:15:02 EST


Hi, Arnd,

"Arnd Bergmann" <arnd@xxxxxxxx> writes:

> On Mon, Sep 9, 2024, at 20:00, Naresh Kamboju wrote:
>> The arm kunit builds failed on the Linux next-20240909 due to following
>> build warnings / errors with gcc-13 and clang-19 with extra Kconfigs
>>
>> CONFIG_OF_KUNIT_TEST=y
>> CONFIG_KASAN=y
>> CONFIG_KUNIT=y
>> CONFIG_KUNIT_ALL_TESTS=y
>>
>> First seen on next-20240909
>> Good: next-20240906
>> BAD: next-20240909
>>
>> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>>
>
> This patch below addresses the build regression, not sure if that
> is what we want.
>
> Arnd
>
>>From 39601b1274354c710368f5cf40fe9e32540f7591 Mon Sep 17 00:00:00 2001
> From: Arnd Bergmann <arnd@xxxxxxxx>
> Date: Mon, 9 Sep 2024 13:10:21 +0000
> Subject: [PATCH] resource, kunit: add sparsemem dependency
>
> The testcase now selects CONFIG_GET_FREE_REGION, but that
> is only available for sparsemem configurations:
>
> WARNING: unmet direct dependencies detected for GET_FREE_REGION
> Depends on [n]: SPARSEMEM [=n]
> Selected by [m]:
> - RESOURCE_KUNIT_TEST [=m] && RUNTIME_TESTING_MENU [=y] && KUNIT [=y]
> In file included from include/linux/ioport.h:15,
> from kernel/resource.c:15:
> kernel/resource.c: In function 'gfr_start':
> include/linux/mm.h:101:35: error: 'MAX_PHYSMEM_BITS' undeclared (first use in this function)
> 101 | # define PHYSMEM_END ((1ULL << MAX_PHYSMEM_BITS) - 1)
> kernel/resource.c:1874:57: note: in expansion of macro 'PHYSMEM_END'
> 1874 | end = min_t(resource_size_t, base->end, PHYSMEM_END);
> | ^~~~~~~~~~~
>
> It may be better to extend this to non-sparsemem, but a Kconfig
> dependency is the easiest way to address the build failure at the
> moment.
>
> Fixes: e2941fe697c8 ("resource, kunit: add test case for region_intersects()")
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index b986050fc7e0..4c081a28fe96 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -2632,6 +2632,7 @@ config HASH_KUNIT_TEST
> config RESOURCE_KUNIT_TEST
> tristate "KUnit test for resource API" if !KUNIT_ALL_TESTS
> depends on KUNIT
> + depends on SPARSEMEM
> default KUNIT_ALL_TESTS
> select GET_FREE_REGION
> help

Thanks for the fixing patch. I think that this is caused by merge
conflict.

For the fix, IMHO, resource kunit test may be used on architectures with
SPARSEMEM=n. I have a fix patch in,

https://lore.kernel.org/linux-mm/87wmjkyshl.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/

--
Best Regards,
Huang, Ying