[PATCH] ARM: add BUILD_BUG_ON to check if fixmap range spans multiple pmds

Quanyang Wang quanyang.wang at windriver.com
Tue Oct 26 02:53:25 PDT 2021


Hi,
Sorry for the inconvenience.

On 10/26/21 4:59 PM, Russell King (Oracle) wrote:
> On Sun, Oct 24, 2021 at 11:44:31PM +0200, Linus Walleij wrote:
>> On Wed, Oct 20, 2021 at 7:50 AM <quanyang.wang at windriver.com> wrote:
>>
>>> From: Quanyang Wang <quanyang.wang at windriver.com>
>>>
>>> Not only the early fixmap range, but also the fixmap range should be
>>> checked if it spans multiple pmds. When enabling CONFIG_DEBUG_HIGHMEM,
>>> some systems which contain up to 16 CPUs will crash.
>>>
>>> Signed-off-by: Quanyang Wang <quanyang.wang at windriver.com>
>>
>> Looks reasonable to me.
>> Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
>>
>> Please submit this patch into Russell's patch tracker.
> 
> ... and has totally broken what looks like _all_ ARM kernel builds. 
This patch is intended to trigger build error when it check the value of
__end_of_fixmap_region is equal or larger than 256.
In fact, it breaks the ARM kernel builds which NR_CPUS is equal or more 
than 16. If CONFIG_DEBUG_HIGHMEM is enabled, all ARM builds which 
NR_CPUS is more than 8 will fail.
It
> can not have been tested. 
I tested this patch with allyesconfig instead of some configs in 
arch/arm/configs/. In allyesconfig, NR_CPUS is 4, so it not trigger 
build error. Then I changed it to 8 to verify my patch.
Maybe it's uncovered a previously unknown
> problem, 
Yes, at my side, axm5516 with CONFIG_DEBUG_HIGHMEM always falls into 
crash. Other ARM platform which contains more than 8 CPUs may encounter
the same issue.
but causing such a wide-range regression is disappointing.
Sorry for not consider this thoroughly.

Thanks,
Quanyang
> I'm going to revert this commit.
> 



More information about the linux-arm-kernel mailing list