Le 13/08/2023 à 21:38, Erhard Furtner a écrit :
> On Fri, 11 Aug 2023 06:45:14 +0000
> Christophe Leroy <christophe.le...@csgroup.eu> wrote:
> 
>> Le 11/08/2023 à 01:48, Erhard Furtner a écrit :
>>> I wanted to fire up my PowerMac G4 MDD (Dual CPU) with a KASAN debug build 
>>> of kernel 6.5-rc5 for testing purposes. But the kernel fails to boot at a 
>>> very early stage. I only get a white screen reading
>>> "done
>>> found display: /pci@f0000000/ATY,AlteracParent@10/ATY,Alterac_B@1, 
>>> opening..."
>>
>> Can you try with CONFIG_PPC_EARLY_DEBUG and see if you get more
>> information on the screen ?
> 
> With CONFIG_PPC_EARLY_DEBUG set booting continues and I get two more lines on 
> a white screen:
> 
> [    0.000000] printk: bootconsole [udbg0] enabled
> [    0.000000] Total memory = 2048MB; using 4096kB for hash table
> 
> Afterwards the G4 freezes.

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();


Christophe


> 
> By chane I found out another interesting thing: This only happens on cold 
> boots.
> 
> If I boot the G4 up with another kernel first and boot the SMP KASAN kernel 
> afterwards it just boots up fine too! On further reboots the SMP KASAN kernel 
> keeps booting up normally. Until I turn the machine off - and next time I 
> turn it on the same SMP KASAN kernel fails booting again as described. 
> Strange...
> 
> This behaviour however is reproducible. Tried that procedure 15-20 times just 
> to be sure. Hope you can make something out of it.
> 
> Attached is a dmesg of a successful SMP KASAM kernel boot attempt when a 
> working kernel was booted first.
> 
> Regards,
> Erhard F.

Reply via email to