Subject: RPI4: fail too boot with an initrd

From: LABBE Corentin <[email-masked]>
Date: Fri, 14 Feb 2020 14:27:48 +0100

Hello

Since the inclusion of the "enable network support in RPi4 config" serie on uboot, I have started to work on adding the rpi4 in kernelCI.
But I fail to succeed in using a kernel/dtb/ramdisk downloaded via tftp.

Using booti I hit:
[    0.000000] Linux version 5.6.0-rc1-next-20200212 (clabbe@build2-bionic-1804) (gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro    GCC 7.4-2019.02)) #66 SMP PREEMPT Wed Feb 12 10:14:20 UTC 2020
[    0.000000] Machine model: Raspberry Pi 4 Model B
[    0.000000] earlycon: uart0 at MMIO32 0x00000000fe215040 (options '')
[    0.000000] printk: bootconsole [uart0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] OF: reserved mem: failed to allocate memory for node 'linux,cma'
[    0.000000] cma: Failed to reserve 32 MiB
[    0.000000] Kernel panic - not syncing: Failed to allocate page table page
[    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 5.6.0-rc1-next-20200212 #66
[    0.000000] Hardware name: Raspberry Pi 4 Model B (DT)
[    0.000000] Call trace:
[    0.000000]  dump_backtrace+0x0/0x1a0
[    0.000000]  show_stack+0x14/0x20
[    0.000000]  dump_stack+0xbc/0x104
[    0.000000]  panic+0x16c/0x37c
[    0.000000]  early_pgtable_alloc+0x30/0xa0
[    0.000000]  __create_pgd_mapping+0x36c/0x588
[    0.000000]  map_kernel_segment+0x70/0xa4
[    0.000000]  paging_init+0xf4/0x528
[    0.000000]  setup_arch+0x250/0x5d8
[    0.000000]  start_kernel+0x90/0x6d8

Since the same kernel boot with bootefi and that bootefi lack ramdisk address, I tried to add the address in the dtb via:
fdt addr 0x02400000; fdt resize; fdt set /chosen linux,initrd-start 0x02700000; fdt set /chosen linux,initrd-end 0x10000000; bootefi 0x00080000 0x02400000
But with that, I get:
initrd not fully accessible via the linear mapping -- please check your bootloader ...

I have tried many different start/end address without any change.

My last resort was to embed the rootfs in the kernel.
But with the correct console=, the boot stop at:
[    1.373557] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 16, base_baud = 0) is a PL011 rev2
[    1.382565] printk: console [ttyAMA0] enabled
[    1.391318] printk: bootconsole [uart0] disabled

With the wrong console (ttyS0), the boot go up to start init which panic due to lack of console.

Regards

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel