KASAN debug kernel fails to boot at early stage when CONFIG_SMP=y is set (kernel 6.5-rc5, PowerMac G4 3,6)

Christophe Leroy christophe.leroy at csgroup.eu
Wed Aug 16 03:25:13 AEST 2023



Le 14/08/2023 à 19:27, Erhard Furtner a écrit :
> On Mon, 14 Aug 2023 09:40:44 +0000
> Christophe Leroy <christophe.leroy at csgroup.eu> wrote:
> 
>> Interesting. That means we get stuck somewhere around  MMU_init()
>>
>> We know that MMU_init_hw() is called and runs at least until:
>>
>> 	pr_info("Total memory = %lldMB; using %ldkB for hash table\n",
>> 		(unsigned long long)(total_memory >> 20), Hash_size >> 10);
>>
>> But we never reach the print in setup_kuap() which is itself called by
>> set_kup():
>> 	pr_info("Activating Kernel Userspace Access Protection\n");
>>
>>
>> Could you try to narrow more the issue by spreading pr_info() at places
>> in the code below and/or the called functions ? Either we never come
>> back from MMU_init_hw(), or one of mapin_ram() btext_unmap()
>> kasan_mmu_init() fails.
>>
>> So the piece of code we are interested in is located in
>> arch/powerpc/mm/init_32.c and is:
>>
>> 	/* Initialize the MMU hardware */
>> 	if (ppc_md.progress)
>> 		ppc_md.progress("MMU:hw init", 0x300);
>> ==>	MMU_init_hw();
>>
>> 	/* Map in all of RAM starting at KERNELBASE */
>> 	if (ppc_md.progress)
>> 		ppc_md.progress("MMU:mapin", 0x301);
>> 	mapin_ram();
>>
>> 	/* Initialize early top-down ioremap allocator */
>> 	ioremap_bot = IOREMAP_TOP;
>>
>> 	if (ppc_md.progress)
>> 		ppc_md.progress("MMU:exit", 0x211);
>>
>> 	/* From now on, btext is no longer BAT mapped if it was at all */
>> #ifdef CONFIG_BOOTX_TEXT
>> 	btext_unmap();
>> #endif
>>
>> 	kasan_mmu_init();
>>
>> ==>	setup_kup();
> 
> I added a pr_info(); right after MMU_init_hw(); and another one right after setup_kup();.
> 
> Output of PPC_EARLY_DEBUG changes so that I get an additional black blank line after
> [    0.000000] printk: bootconsole [udbg0] enabled
> [    0.000000] Total memory = 2048MB; using 4096kB for hash table
> 
> and the freeze afterwards. So it looks like we return from MMU_init_hw() but not from setup_kup().

I just sent a patch with additional pr_info() in order to help locate 
the issue, please provide output with that patch.

Thanks
Christophe


More information about the Linuxppc-dev mailing list