On Mon, 14 Aug 2023 09:40:44 +0000
Christophe Leroy <christophe.le...@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().

The dmesg of a warm boot (after first booting with kernel 6.4.10) supports that 
as it also shows the 1st blank line and the 2nd one just after activating 
KUEP/KUAP:

[    0.000000] printk: bootconsole [udbg0] enabled
[    0.000000] Total memory = 2048MB; using 4096kB for hash table
[    0.000000] 
[    0.000000] Activating Kernel Userspace Access Protection
[    0.000000] Activating Kernel Userspace Execution Prevention
[    0.000000] 
[    0.000000] Linux version 6.5.0-rc6-PMacG4-dirty (root@T1000) (gcc (Gentoo 
12.3.1_p20230526 p2) 12.3.1 20230526, GNU ld (Gentoo 2.40 p7) 2.40.0) #1 SMP 
Mon Aug 14 18:05:17 CEST 2023

As the 2nd blank line from pr_info() is just after KUAP, KUEP initialization I 
thought these might be a problem. But if I deactivate KUAP/KUAP in the kernel 
.config I still get the freeze sot it must be something else.

Regards,
Erhard

Attachment: dmesg_65-rc6_g4-
Description: Binary data

Reply via email to