Bug: qemu_arm64: Cannot access the second flash bank
Matthias Brugger
mbrugger at suse.com
Thu Jan 9 15:57:31 CET 2020
[adding Stefan as the maintainer of drivers/mtd/cfi_*]
On 09/01/2020 14:11, Robin Randhawa wrote:
> Hi Matthias.
>
> On Thu, 2020-01-09 at 12:12 +0100, Matthias Brugger wrote:
>
> [...]
>
>> Can you pinpoint me to where I can find the DTS used by U-boot.
>
> As per my understanding the DTB for this virtual platform is generated
> by qemu and handed to u-boot.
>
> I dumped the DTB to the host filesystem using GDB and 'dump mem' then
> dtc'd it to get the DTS.
Site note, I think you can do that in U-Boot like this:
fdt addr <address-of-your-dtb>
fdt print
>
> It's at:
> https://pastebin.ubuntu.com/p/2KzPKdxddx/
>
Ok, what I found so far:
in hw/arm/virt.c virt_flash_fdt() it creates the reg property like this [0]:
qemu_fdt_setprop_sized_cells(vms->fdt, nodename, "reg",
2, flashbase, 2, flashsize,
2, flashbase + flashsize, 2, flashsize);
Which creates the flash node we see in the dts you shared:
reg = <0x0 0x0 0x0 0x4000000 0x0 0x4000000 0x0 0x4000000>;
Which is:
Bank1: Flashbase 0x0 0x0 Flashsize 0x0 0x4000000
Bank2: Flashbase 0x0 0x4000000 Flashsize 0x0 0x4000000
The property expects size-cells to be two, but U-Boot will use one cell if no
size-cells are defined in the device node (which is not the case) and therefor
will see
Bank1: Flashbase 0x0 0x0 Flashsize 0x4000000
Bank2: Flashbase 0x4000000 0x0 Flashsize 0x4000000
Which maches with the flinfo you mentioned.
Now the question is if this is a problem of U-Boots implementation of cfi_flash,
which expects size-cells to be present in the flash node as it otherwise assumes
one [1]. Or if this is a problem of qemu which creates a device tree specifying
the size-cells only in the parent node.
Unfortunately the device tree specification as I understand it, is not clear [2]
on this.
Peter, Stefan any thoughts?
Regards,
Matthias
[0]
https://git.qemu.org/?p=qemu.git;a=blob;f=hw/arm/virt.c;h=39ab5f47e0bdc33b9bcb6320fdc10d35396579b1;hb=HEAD#l991
[1] https://gitlab.denx.de/u-boot/u-boot/blob/master/drivers/mtd/cfi_flash.c#L2472
[2]
https://github.com/devicetree-org/devicetree-specification/blob/master/source/devicetree-basics.rst#address-cells-and-size-cells
>
>> I tried to run that myself but wasn't able to see any output. Which
>> U-Boot
>> config do you use? rpi_3_defconfig?
>
> I hit this problem for the qemu_arm64 u-boot platform target for which
> I used qemu_arm64_defconfig [1].
>
> Let me know if you need more info.
>
> Cheers,
> Robin
>
> [1]: https://github.com/u-boot/u-boot/blob/master/configs/qemu_arm64_defconfig
>
>
>
More information about the U-Boot
mailing list