Bug 216190
Summary: | 5.19-rc4 kernel + KASAN fails to boot at very early stage when CONFIG_SMP=y is selected (PowerMac G4 3,6) | ||
---|---|---|---|
Product: | Platform Specific/Hardware | Reporter: | Erhard F. (erhard_f) |
Component: | PPC-32 | Assignee: | platform_ppc-32 |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | christophe.leroy |
Priority: | P1 | ||
Hardware: | PPC-32 | ||
OS: | Linux | ||
Kernel Version: | 5.19-rc4 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
kernel .config (5.19-rc4, outline KASAN, CONFIG_SMP=y, PowerMac G4 DP)
dmesg (5.19-rc4, outline KASAN, without SMP, PowerMac G4 DP) |
Description
Erhard F.
2022-06-29 20:04:22 UTC
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. |