On Mon, Feb 17, 2020 at 11:50:04AM +0100, Matthias Brugger wrote: > > > On 17/02/2020 11:37, LABBE Corentin wrote: > > On Fri, Feb 14, 2020 at 06:15:27PM +0000, James Morse wrote: > >> Hi Corentin, > >> > >> On 14/02/2020 13:27, LABBE Corentin wrote: > >>> 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. > >> > >> So no EFI, > >> > >>> [ 0.000000] OF: reserved mem: failed to allocate memory for node > >>> 'linux,cma' > >> > >> Out of memory. > >> > >>> [ 0.000000] cma: Failed to reserve 32 MiB > >>> [ 0.000000] Kernel panic - not syncing: Failed to allocate page table > >>> page > >> > >> Out of memory... > >> > >>> [ 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 > >> > >> ... really early! > >> > >>> [ 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, > >> > >> Booting with EFI will cause linux to use the EFI memory map. > >> > >> Does your DT have a memory node? (or does it expect EFI to provide the > >> information) > >> > >> > >>> 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 ... > >> > >> So this one is an EFI boot, but you can't find where to put the initramfs > >> such that the > >> kernel agrees its in memory. > >> > >> If you boot with 'efi=debug', linux will print the EFI memory map. Could > >> you compare that > >> to where U-Boot thinks memory is? > >> > >> (it sounds like your DT memory node is missing, and your EFI memory map is > >> surprisingly small) > > > > Hello > > > > Thanks for your advices. > > > > In the dtb of mainline linux: > > /* Will be filled by the bootloader */ > > memory@0 { > > device_type = "memory"; > > reg = <0 0 0>; > > }; > > > > In uboot I have: > > static struct mm_region bcm2711_mem_map[] = { > > { > > .virt = 0x00000000UL, > > .phys = 0x00000000UL, > > .size = 0xfe000000UL, > > .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | > > PTE_BLOCK_INNER_SHARE > > }, { > > .virt = 0xfc000000UL, > > .phys = 0xfc000000UL, > > .size = 0x03800000UL, > > .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | > > PTE_BLOCK_NON_SHARE | > > PTE_BLOCK_PXN | PTE_BLOCK_UXN > > }, { > > /* List terminator */ > > 0, > > } > > }; > > But I dont know if uboot use that for filling the memory node. > > No it doesn't. U-Boot uses the DT from the firmware and passes this to the > kernel. But it seems you pass instead your own device-tree to the kernel, so > you > will need to update the memory node to show the available memory on you board. >
I dont understand, in the Linux commit "ARM: dts: Add minimal Raspberry Pi 4 support" I read: The RPi 4 is available in 3 different variants (1, 2 and 4 GB RAM), so leave the memory size to zero and let the bootloader take care of it. But if uboot dont fill that... So the DTB in mainline is wrong, right ? Regards