Messages in this thread | | | Date | Wed, 31 Aug 2022 20:37:36 +0800 | Subject | Re: [PATCH] ARM: mmu: fix access to illegal address when using earlycon & memblock=debug | From | Victor Hassan <> |
| |
On 8/31/2022 7:52 PM, Marek Szyprowski wrote: > Hi Victor, > > On 16.03.2022 03:33, Victor Hassan wrote: >> earlycon uses fixmap to create a memory map, >> So we need to close earlycon before closing fixmap, >> otherwise printk will access illegal addresses. >> After creating a new memory map, we open earlycon again. >> >> Signed-off-by: Victor Hassan <victor@allwinnertech.com> > > This patch landed in linux next-20220831 as commit a76886d117cb ("ARM: > 9223/1: mmu: fix access to illegal address when using earlycon & > memblock=debug"). Unfortunately it breaks booting of all my test boards > which *do not* use earlycon. It can be easily reproduced even with QEMU. > > With kernel compiled from multi_v7_defconfig the following setup boots: > > $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append > "console=ttyAMA0 earlycon" -M virt -smp 2 -m 512 > > while this one doesn't: > > $ qemu-system-arm -nographic -kernel arch/arm/boot/zImage -append > "console=ttyAMA0" -M virt -smp 2 -m 512 > > >> --- >> arch/arm/mm/mmu.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c >> index 274e4f73fd33..f3511f07a7d0 100644 >> --- a/arch/arm/mm/mmu.c >> +++ b/arch/arm/mm/mmu.c >> @@ -14,6 +14,7 @@ >> #include <linux/fs.h> >> #include <linux/vmalloc.h> >> #include <linux/sizes.h> >> +#include <linux/console.h> >> >> #include <asm/cp15.h> >> #include <asm/cputype.h> >> @@ -1695,6 +1696,9 @@ static void __init early_fixmap_shutdown(void) >> pmd_clear(fixmap_pmd(va)); >> local_flush_tlb_kernel_page(va); >> >> +#ifdef CONFIG_FIX_EARLYCON_MEM >> + console_stop(console_drivers); >> +#endif >> for (i = 0; i < __end_of_permanent_fixed_addresses; i++) { >> pte_t *pte; >> struct map_desc map; >> @@ -1713,6 +1717,9 @@ static void __init early_fixmap_shutdown(void) >> >> create_mapping(&map); >> } >> +#ifdef CONFIG_FIX_EARLYCON_MEM >> + console_start(console_drivers); >> +#endif >> } >> >> /* > > Best regards
Dear Marek, Thank you for the notice. I'll figure it out and feed back to you as soon as possible.
Regards, Victor
| |