Created attachment 301307 [details] kernel .config (5.19-rc4, outline KASAN, CONFIG_SMP=y, PowerMac G4 DP) Revisiting bug #215389 and bug #216041 I fiddled around with KASAN builds again and finally may have found a clue. Kernel 5.19-rc4 runs fine with outline KASAN as long as '# CONFIG_SMP is not set'. It runs perfetly well without any advanced options needed, also setting THREAD_SHIFT manually to 14 is not needed. As soon as I set CONFIG_SMP=y in the attached .config I get a non-working kernel. It boots but gets stuck very early on a white screen reading "done found display: /pci@f0000000/ATY,AlteracParent@10/ATY,Alterac_B@1, opening..." Interesting thing is that without SMP I also didn't get memory corruption as in bug #215389 nor stack overflows as in bug #216041 after hours of building so far.
Created attachment 301308 [details] dmesg (5.19-rc4, outline KASAN, without SMP, PowerMac G4 DP)
Problem is likely due to commit 4291d085b0b0 ("powerpc/32s: Make pte_update() non atomic on 603 core") kasan_early_init() calls __set_pte_at(), which calls pte_update() if CONFIG_SMP, and pte_update() calls mmu_has_feature() since above commit, but that's too early for calling mmu_has_feature() so mmu_has_feature() tries to warn using printk(), but that cannot work because the KASAN shadow is not set. Can you try with the change below ? diff --git a/arch/powerpc/mm/kasan/init_32.c b/arch/powerpc/mm/kasan/init_32.c index f3e4d069e0ba..a70828a6d935 100644 --- a/arch/powerpc/mm/kasan/init_32.c +++ b/arch/powerpc/mm/kasan/init_32.c @@ -25,7 +25,7 @@ static void __init kasan_populate_pte(pte_t *ptep, pgprot_t prot) int i; for (i = 0; i < PTRS_PER_PTE; i++, ptep++) - __set_pte_at(&init_mm, va, ptep, pfn_pte(PHYS_PFN(pa), prot), 0); + __set_pte_at(&init_mm, va, ptep, pfn_pte(PHYS_PFN(pa), prot), 1); } int __init kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end)
(In reply to Christophe Leroy from comment #2) > Problem is likely due to commit 4291d085b0b0 ("powerpc/32s: Make > pte_update() non atomic on 603 core") > > kasan_early_init() calls __set_pte_at(), which calls pte_update() if > CONFIG_SMP, and pte_update() calls mmu_has_feature() since above commit, but > that's too early for calling mmu_has_feature() so mmu_has_feature() tries to > warn using printk(), but that cannot work because the KASAN shadow is not > set. > > Can you try with the change below ? Applied your patch on top of 5.19-rc4 and can confirm it works. Thanks! I'll close here as soon it is in the -rcs.
Patch landed in stable (v5.19.2) meanwhile. Closing here.