Thread (34 messages) 34 messages, 3 authors, 2024-02-28

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

From: Christophe Leroy <hidden>
Date: 2023-08-15 17:26:36


Le 14/08/2023 à 19:27, Erhard Furtner a écrit :
On Mon, 14 Aug 2023 09:40:44 +0000
Christophe Leroy [off-list ref] wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help