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

From: Quanyang Wang
Date: Tue Oct 26 2021 - 05:54:12 EST


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@xxxxxxxxxxxxx> wrote:

From: Quanyang Wang <quanyang.wang@xxxxxxxxxxxxx>

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@xxxxxxxxxxxxx>

Looks reasonable to me.
Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx>

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.