linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* RPI4: fail too boot with an initrd
@ 2020-02-14 13:27 LABBE Corentin
  2020-02-14 18:15 ` James Morse
  0 siblings, 1 reply; 9+ messages in thread
From: LABBE Corentin @ 2020-02-14 13:27 UTC (permalink / raw)
  To: u-boot, nsaenzjulienne, bcm-kernel-feedback-list,
	linux-rpi-kernel, linux-arm-kernel, linux-kernel

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
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-14 13:27 RPI4: fail too boot with an initrd LABBE Corentin
@ 2020-02-14 18:15 ` James Morse
  2020-02-17 10:37   ` LABBE Corentin
  0 siblings, 1 reply; 9+ messages in thread
From: James Morse @ 2020-02-14 18:15 UTC (permalink / raw)
  To: LABBE Corentin
  Cc: nsaenzjulienne, linux-kernel, u-boot, bcm-kernel-feedback-list,
	linux-rpi-kernel, linux-arm-kernel

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)


Thanks,

James

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-14 18:15 ` James Morse
@ 2020-02-17 10:37   ` LABBE Corentin
  2020-02-17 10:50     ` Matthias Brugger
  0 siblings, 1 reply; 9+ messages in thread
From: LABBE Corentin @ 2020-02-17 10:37 UTC (permalink / raw)
  To: James Morse
  Cc: nsaenzjulienne, linux-kernel, u-boot, bcm-kernel-feedback-list,
	linux-rpi-kernel, linux-arm-kernel

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.


Booting the rpi4 with efi=debug give:
EFI stub: Booting Linux Kernel...
EFI stub: EFI_RNG_PROTOCOL unavailable, no randomness supplied
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 5.6.0-rc1-next-20200214 (clabbe@build2-bionic-1804) (gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02)) #70 SMP PREEMPT Fri Feb 14 10:54:54 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:   System Table: 0x000000003b365590
[    0.000000] efi:   MemMap Address: 0x0000000038484040
[    0.000000] efi:   MemMap Size: 0x00000410
[    0.000000] efi:   MemMap Desc. Size: 0x00000028
[    0.000000] efi:   MemMap Desc. Version: 0x00000001
[    0.000000] efi: EFI v2.80 by Das U-Boot
[    0.000000] efi:  SMBIOS=0x39f46000  MEMRESERVE=0x38487040 
[    0.000000] efi: Processing EFI memory map:
[    0.000000] efi:   0x000000000000-0x000000000fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000000001000-0x00000007ffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000000080000-0x000001b3ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000001b40000-0x000007efffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000007f00000-0x000007f08fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000007f09000-0x0000381fffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038200000-0x0000383fffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038400000-0x00003846ffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038470000-0x00003847ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038480000-0x000038483fff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038484000-0x000038487fff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000038488000-0x000039f40fff [Loader Code        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f41000-0x000039f44fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f45000-0x000039f45fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f46000-0x000039f46fff [Runtime Data       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f47000-0x000039f48fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f49000-0x000039f4cfff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f4d000-0x000039f4efff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f4f000-0x000039f52fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f53000-0x000039f53fff [Runtime Data       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f54000-0x000039f54fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000039f55000-0x00003b35ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x00003b360000-0x00003b36ffff [Runtime Code       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x00003b370000-0x00003b3fffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x000040000000-0x0000fbffffff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
[    0.000000] efi:   0x0000fe100000-0x0000fe100fff [Memory Mapped I/O  |RUN|  |  |  |  |  |  |  |   |  |  |  |  ]
[    0.000000] ------------[ cut here ]------------
[    0.000000] initrd not fully accessible via the linear mapping -- please check your bootloader ...

Regards

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-17 10:37   ` LABBE Corentin
@ 2020-02-17 10:50     ` Matthias Brugger
  2020-02-17 12:53       ` LABBE Corentin
  0 siblings, 1 reply; 9+ messages in thread
From: Matthias Brugger @ 2020-02-17 10:50 UTC (permalink / raw)
  To: LABBE Corentin, James Morse
  Cc: linux-kernel, u-boot, bcm-kernel-feedback-list, nsaenzjulienne,
	linux-arm-kernel, linux-rpi-kernel



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.

Regards,
Matthias

> 
> 
> Booting the rpi4 with efi=debug give:
> EFI stub: Booting Linux Kernel...
> EFI stub: EFI_RNG_PROTOCOL unavailable, no randomness supplied
> EFI stub: Using DTB from configuration table
> EFI stub: Exiting boot services and installing virtual address map...
> [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
> [    0.000000] Linux version 5.6.0-rc1-next-20200214 (clabbe@build2-bionic-1804) (gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02)) #70 SMP PREEMPT Fri Feb 14 10:54:54 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:   System Table: 0x000000003b365590
> [    0.000000] efi:   MemMap Address: 0x0000000038484040
> [    0.000000] efi:   MemMap Size: 0x00000410
> [    0.000000] efi:   MemMap Desc. Size: 0x00000028
> [    0.000000] efi:   MemMap Desc. Version: 0x00000001
> [    0.000000] efi: EFI v2.80 by Das U-Boot
> [    0.000000] efi:  SMBIOS=0x39f46000  MEMRESERVE=0x38487040 
> [    0.000000] efi: Processing EFI memory map:
> [    0.000000] efi:   0x000000000000-0x000000000fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000000001000-0x00000007ffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000000080000-0x000001b3ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000001b40000-0x000007efffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000007f00000-0x000007f08fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000007f09000-0x0000381fffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038200000-0x0000383fffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038400000-0x00003846ffff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038470000-0x00003847ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038480000-0x000038483fff [Conventional Memory|   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038484000-0x000038487fff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000038488000-0x000039f40fff [Loader Code        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f41000-0x000039f44fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f45000-0x000039f45fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f46000-0x000039f46fff [Runtime Data       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f47000-0x000039f48fff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f49000-0x000039f4cfff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f4d000-0x000039f4efff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f4f000-0x000039f52fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f53000-0x000039f53fff [Runtime Data       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f54000-0x000039f54fff [Reserved           |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000039f55000-0x00003b35ffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x00003b360000-0x00003b36ffff [Runtime Code       |RUN|  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x00003b370000-0x00003b3fffff [Loader Data        |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x000040000000-0x0000fbffffff [Boot Data          |   |  |  |  |  |  |  |  |   |WB|  |  |  ]
> [    0.000000] efi:   0x0000fe100000-0x0000fe100fff [Memory Mapped I/O  |RUN|  |  |  |  |  |  |  |   |  |  |  |  ]
> [    0.000000] ------------[ cut here ]------------
> [    0.000000] initrd not fully accessible via the linear mapping -- please check your bootloader ...
> 
> Regards
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-17 10:50     ` Matthias Brugger
@ 2020-02-17 12:53       ` LABBE Corentin
  2020-02-17 13:07         ` Matthias Brugger
  0 siblings, 1 reply; 9+ messages in thread
From: LABBE Corentin @ 2020-02-17 12:53 UTC (permalink / raw)
  To: Matthias Brugger
  Cc: linux-arm-kernel, linux-kernel, u-boot, James Morse,
	linux-rpi-kernel, bcm-kernel-feedback-list, nsaenzjulienne

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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-17 12:53       ` LABBE Corentin
@ 2020-02-17 13:07         ` Matthias Brugger
  2020-02-18 10:01           ` LABBE Corentin
  0 siblings, 1 reply; 9+ messages in thread
From: Matthias Brugger @ 2020-02-17 13:07 UTC (permalink / raw)
  To: LABBE Corentin
  Cc: linux-arm-kernel, linux-kernel, u-boot, James Morse,
	linux-rpi-kernel, bcm-kernel-feedback-list, nsaenzjulienne



On 17/02/2020 13:53, LABBE Corentin wrote:
> 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 ?
> 

How do you pass your DTB to the kernel? Does the FW uses your DTB by putting it
as bcm2711-rpi-4-b.dtb in the first FAT partition? Or do you load it from U-Boot
afterwards? In the latter case you have to take care to add the needed size of
memory. In the first case you use what is the default behavior for U-Boot; the
RPi FW updates the node and then passes it to U-Boot then it get's passed to the
kernel.

Regards,
Matthias

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-17 13:07         ` Matthias Brugger
@ 2020-02-18 10:01           ` LABBE Corentin
  2020-02-18 10:36             ` Matthias Brugger
  0 siblings, 1 reply; 9+ messages in thread
From: LABBE Corentin @ 2020-02-18 10:01 UTC (permalink / raw)
  To: Matthias Brugger
  Cc: linux-arm-kernel, linux-kernel, u-boot, James Morse,
	linux-rpi-kernel, bcm-kernel-feedback-list, nsaenzjulienne

On Mon, Feb 17, 2020 at 02:07:09PM +0100, Matthias Brugger wrote:
> 
> 
> On 17/02/2020 13:53, LABBE Corentin wrote:
> > 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 ?
> > 
> 
> How do you pass your DTB to the kernel? Does the FW uses your DTB by putting it
> as bcm2711-rpi-4-b.dtb in the first FAT partition? Or do you load it from U-Boot
> afterwards? In the latter case you have to take care to add the needed size of
> memory. In the first case you use what is the default behavior for U-Boot; the
> RPi FW updates the node and then passes it to U-Boot then it get's passed to the
> kernel.
> 

Hello

I load the dtb via uboot/tftp.
On another thread, I got the hint to enable CONFIG_ARCH_FIXUP_FDT_MEMORY and it made my problem solved.

Thanks
Regards

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-18 10:01           ` LABBE Corentin
@ 2020-02-18 10:36             ` Matthias Brugger
  2020-02-18 11:08               ` Jaehoon Chung
  0 siblings, 1 reply; 9+ messages in thread
From: Matthias Brugger @ 2020-02-18 10:36 UTC (permalink / raw)
  To: LABBE Corentin, Matthias Brugger
  Cc: linux-kernel, u-boot, bcm-kernel-feedback-list, linux-rpi-kernel,
	James Morse, linux-arm-kernel



On 18/02/2020 11:01, LABBE Corentin wrote:
> On Mon, Feb 17, 2020 at 02:07:09PM +0100, Matthias Brugger wrote:
>>
>>
>> On 17/02/2020 13:53, LABBE Corentin wrote:
>>> 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 ?
>>>
>>
>> How do you pass your DTB to the kernel? Does the FW uses your DTB by putting it
>> as bcm2711-rpi-4-b.dtb in the first FAT partition? Or do you load it from U-Boot
>> afterwards? In the latter case you have to take care to add the needed size of
>> memory. In the first case you use what is the default behavior for U-Boot; the
>> RPi FW updates the node and then passes it to U-Boot then it get's passed to the
>> kernel.
>>
> 
> Hello
> 
> I load the dtb via uboot/tftp.
> On another thread, I got the hint to enable CONFIG_ARCH_FIXUP_FDT_MEMORY and it made my problem solved.

Hm, so should we enable that for all RPi3/4/arm64 configs then?

Regards,
Matthias


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: RPI4: fail too boot with an initrd
  2020-02-18 10:36             ` Matthias Brugger
@ 2020-02-18 11:08               ` Jaehoon Chung
  0 siblings, 0 replies; 9+ messages in thread
From: Jaehoon Chung @ 2020-02-18 11:08 UTC (permalink / raw)
  To: Matthias Brugger, LABBE Corentin, Matthias Brugger
  Cc: linux-kernel, u-boot, bcm-kernel-feedback-list, linux-rpi-kernel,
	James Morse, linux-arm-kernel

On 2/18/20 7:36 PM, Matthias Brugger wrote:
> 
> 
> On 18/02/2020 11:01, LABBE Corentin wrote:
>> On Mon, Feb 17, 2020 at 02:07:09PM +0100, Matthias Brugger wrote:
>>>
>>>
>>> On 17/02/2020 13:53, LABBE Corentin wrote:
>>>> 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 ?
>>>>
>>>
>>> How do you pass your DTB to the kernel? Does the FW uses your DTB by putting it
>>> as bcm2711-rpi-4-b.dtb in the first FAT partition? Or do you load it from U-Boot
>>> afterwards? In the latter case you have to take care to add the needed size of
>>> memory. In the first case you use what is the default behavior for U-Boot; the
>>> RPi FW updates the node and then passes it to U-Boot then it get's passed to the
>>> kernel.
>>>
>>
>> Hello
>>
>> I load the dtb via uboot/tftp.
>> On another thread, I got the hint to enable CONFIG_ARCH_FIXUP_FDT_MEMORY and it made my problem solved.
> 
> Hm, so should we enable that for all RPi3/4/arm64 configs then?

In u-boot, it's already enabled, except RPI4. I didn't check in more detail.

In RPI4's case, it doesn't set in config
# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set

Best Regards,
Jaehoon Chung

> 
> Regards,
> Matthias
> 
> 
> 


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-02-18 11:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-14 13:27 RPI4: fail too boot with an initrd LABBE Corentin
2020-02-14 18:15 ` James Morse
2020-02-17 10:37   ` LABBE Corentin
2020-02-17 10:50     ` Matthias Brugger
2020-02-17 12:53       ` LABBE Corentin
2020-02-17 13:07         ` Matthias Brugger
2020-02-18 10:01           ` LABBE Corentin
2020-02-18 10:36             ` Matthias Brugger
2020-02-18 11:08               ` Jaehoon Chung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).