[PATCH -next v3] arm64: fix build warning for ARM64_MEMSTART_SHIFT

zhangjianhua (E) chris.zjh at huawei.com
Thu Aug 3 23:39:24 PDT 2023


在 2023/8/4 14:24, Anshuman Khandual 写道:
>
> On 8/3/23 22:36, Catalin Marinas wrote:
>> On Tue, Jul 25, 2023 at 08:24:04PM +0000, Zhang Jianhua wrote:
>>> When building with W=1, the following warning occurs.
>>>
>>> arch/arm64/include/asm/kernel-pgtable.h:129:41: error: "PUD_SHIFT" is not defined, evaluates to 0 [-Werror=undef]
>>>    129 | #define ARM64_MEMSTART_SHIFT            PUD_SHIFT
>>>        |                                         ^~~~~~~~~
>>> arch/arm64/include/asm/kernel-pgtable.h:142:5: note: in expansion of macro ‘ARM64_MEMSTART_SHIFT’
>>>    142 | #if ARM64_MEMSTART_SHIFT < SECTION_SIZE_BITS
>>>        |     ^~~~~~~~~~~~~~~~~~~~
>>>
>>> The reason is that PUD_SHIFT isn't defined if CONFIG_PGTABLE_LEVELS == 3
>>> and CONFIG_VA_BITS == 39.
>> The correct description is that the generic PUD_SHIFT isn't defined for
>> asm files, we still have it defined for C files (there's an #ifndef
>> __ASSEMBLY__ guard).
> Agreed, please rework the commit message explaining how generic PUD_SHIFT
> definition is not available for assembly files, prompting this code block
> movement. CONFIG_PGTABLE_LEVELS == 3 with CONFIG_VA_BITS == 39 just help
> in exposing this problem.
No problem, I will send a new patch soon.
>>> Now move the macro ARM64_MEMSTART_SHIFT and
>>> ARM64_MEMSTART_ALIGN to arch/arm64/mm/init.c where it is used to avoid
>>> this issue, and also there is no other place to call these two macro.
>>>
>>> Signed-off-by: Zhang Jianhua <chris.zjh at huawei.com>
>> This fix works for me. I'll leave it to Will for 6.6 as apart from the
>> warning with W=1, there's no other issue (ARM64_MEMSTART_* are not used
>> in any asm files).
> Right, not real a problem to be fixed, this can wait till 6.6
>
>> Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
> Reviewed-by: Anshuman Khandual <anshuman.khandual at arm.com>
>



More information about the linux-arm-kernel mailing list