Fail to boot 5.15 on mpc8347 with either debug_pagealloc or nobats

Christophe Leroy christophe.leroy at csgroup.eu
Mon Dec 6 05:11:59 AEDT 2021



Le 05/12/2021 à 17:42, Maxime Bizon a écrit :
> 
> 
> On Saturday 04 Dec 2021 à 17:42:44 (+0000), Christophe Leroy wrote:
> 
>> I guess all the guard is in the comment ...
>>
>> /*
>>    * Set up one of the I/D BAT (block address translation) register pairs.
>>    * The parameters are not checked; in particular size must be a power
>>    * of 2 between 128k and 256M.
>>    */
> 
> It's missing the aligment rule you just taught me, but it's arguably
> not the right place to teach ppc 101.

Indeed

> 
>> Not sure it is that simple.
>>
>> I'm cooking a patch reusing the block_size() function in mm/book3s32/mmu.c
> 
> Indeed it will handle cases that need more than 2 BATs.

Yes, that's the idea.

> 
> Also when mem=2G, I have physical memory mapped twice:
> 
> CONFIG_PAGE_OFFSET=0x80000000
> CONFIG_LOWMEM_SIZE=0x60000000
> 
> 0: 0x80000000-0x8fffffff 0x00000000       256M Kernel rw      m
> 1: 0x90000000-0x9fffffff 0x10000000       256M Kernel rw      m
> 2: 0xa0000000-0xafffffff 0x20000000       256M Kernel rw      m
> 3: 0xb0000000-0xbfffffff 0x30000000       256M Kernel rw      m
> 4: 0xc0000000-0xcfffffff 0x40000000       256M Kernel rw      m
> 5: 0xd0000000-0xdfffffff 0x50000000       256M Kernel rw      m
> 6: 0xf0000000-0xf7ffffff 0x50000000       128M Kernel rw      m
> 
> BAT5 comes from __mmu_mapin_ram(), BAT6 from kasan init
> 
> Is BAT5 needed here ?

Sure it is, because that's were kernel expects lowmem to be mapped. 
Allthough the kernel will unlikely access the 128M reserved for KASAN 
directly, the other 128M are still needed.

> 
> 
> Last one, with KASAN and the following layout, I have an non working
> kernel with VMALLOC_START > VMALLOC_END:
> 
> mem=2G
> CONFIG_PAGE_OFFSET=0x80000000
> CONFIG_LOWMEM_SIZE=0x70000000
> 
> [    0.000000]   * 0xf0000000..0xfe000000  : kasan shadow mem
> [    0.000000]   * 0xef7ff000..0xeffff000  : fixmap
> [    0.000000]   * 0xf1000000..0xef7ff000  : vmalloc & ioremap
> 
> 
> IIUC the safeguard is here:
> 
> arch/powerpc/mm/init_32.c:
> /* The amount of lowmem must be within 0xF0000000 - KERNELBASE. */
> #if (CONFIG_LOWMEM_SIZE > (0xF0000000 - PAGE_OFFSET))
> #error "You must adjust CONFIG_LOWMEM_SIZE or CONFIG_KERNEL_START"
> 
> 
> but the definition needs to be adapted for KASAN=y and require 256
> more MB.
> 
> 

Hum.. Good point.

Christophe


More information about the Linuxppc-dev mailing list