master u-boot broken for HiFive Unleashed
Pragnesh Patel
pragnesh.patel at sifive.com
Wed Aug 5 11:03:40 CEST 2020
Hi Atish,
I just sent a patch to solve this issue.
https://patchwork.ozlabs.org/project/uboot/patch/20200805090053.11805-1-pragnesh.patel@sifive.com/
Thanks,
Pragnesh
>-----Original Message-----
>From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Pragnesh Patel
>Sent: 04 August 2020 20:03
>To: Atish Patra <atishp at atishpatra.org>; Bin Meng <bmeng.cn at gmail.com>;
>Rick Chen <rick at andestech.com>
>Cc: Anup Patel <anup at brainfault.org>; Lukas Auer
><lukas.auer at aisec.fraunhofer.de>; U-Boot Mailing List <u-boot at lists.denx.de>
>Subject: RE: master u-boot broken for HiFive Unleashed
>
>Hi Atish,
>
>>-----Original Message-----
>>From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Pragnesh Patel
>>Sent: 04 August 2020 19:55
>>To: Atish Patra <atishp at atishpatra.org>; Bin Meng <bmeng.cn at gmail.com>;
>>Rick Chen <rick at andestech.com>
>>Cc: Anup Patel <anup at brainfault.org>; Lukas Auer
>><lukas.auer at aisec.fraunhofer.de>; U-Boot Mailing List
>><u-boot at lists.denx.de>
>>Subject: RE: master u-boot broken for HiFive Unleashed
>>
>>Hi Atish,
>>
>>I tried to debug this and find something interesting.
>>
>>With FSBL,
>>I am able to reproduce the same and found that if I will disable
>>CONFIG_OF_BOARD_FIXUP and then print the bdinfo shows expected result.
>>
>>=> bdinfo
>>boot_params = 0x0000000000000000
>>DRAM bank = 0x0000000000000000
>>-> start = 0x0000000080000000
>>-> size = 0x0000000200000000
>>memstart = 0x0000000000000000
>>memsize = 0x00000000
>>flashstart = 0x0000000000000000
>>flashsize = 0x0000000000000000
>>flashoffset = 0x0000000000000000
>>baudrate = 115200 bps
>>relocaddr = 0x00000000fff83000
>>reloc off = 0x000000007fd83000
>>Build = 64-bit
>>current eth = ethernet at 10090000
>>ethaddr = (not set)
>>IP addr = <NULL>
>>fdt_blob = 0x00000000ff75e680
>>new_fdt = 0x00000000ff75e680
>>fdt_size = 0x00000000000047a0
>>=>
>>
>>With CONFIG_OF_BOARD_FIXUP, following functions gets called
>>fix_fdt() ("common/board_f.c") -> board_fix_fdt()
>>("arch/riscv/lib/fdt_fixup.c") and in this we will increase the
>>fdt_blob size for PMP regions
>>
>> /*
>> * Extend the FDT by the following estimated size:
>> *
>> * Each PMP memory region entry occupies 64 bytes.
>> * With 16 PMP memory regions we need 64 * 16 = 1024 bytes.
>> */
>> err = fdt_open_into(dst, dst, fdt_totalsize(dst) + 1024);
>>
>>I suspect this will overwrite the global data (gd) and that creates the problem.
>>
>>
>>Surprisingly With U-Boot SPL,
>>Latest U-Boot master branch works fine and shows expected results.
>
>With U-Boot SPL it works because in riscv_board_reserved_mem_fixup()
>("arch/riscv/lib/fdt_fixup.c")
>
>riscv_board_reserved_mem_fixup() {
> /* avoid the copy if we are using the same device tree */
> if (src_fdt_addr == fdt)
> return 0;
>
> riscv_fdt_copy_resv_mem_node();
>}
>
>OpenSBI and U-Boot both are using the same device tree (U-Boot SPL sends U-
>Boot device tree address in a1 register to OpenSBI), so
>riscv_fdt_copy_resv_mem_node() never gets called.
>
>
>With FSBL, OpenSBI and U-Boot uses different device tree so
>riscv_board_reserved_mem_fixup() ("arch/riscv/lib/fdt_fixup.c"), so
>riscv_fdt_copy_resv_mem_node() getting called and tried to increase the
>fdt_blob size which will overwrite the global data (gd).
>
>
>
>>
>>>-----Original Message-----
>>>From: Atish Patra <atishp at atishpatra.org>
>>>Sent: 30 July 2020 03:13
>>>To: U-Boot Mailing List <u-boot at lists.denx.de>; Bin Meng
>>><bmeng.cn at gmail.com>; Rick Chen <rick at andestech.com>
>>>Cc: Anup Patel <anup at brainfault.org>; Lukas Auer
>>><lukas.auer at aisec.fraunhofer.de>; Pragnesh Patel
>>><pragnesh.patel at sifive.com>
>>>Subject: master u-boot broken for HiFive Unleashed
>>>
>>>[External Email] Do not click links or attachments unless you recognize
>>>the sender and know the content is safe
>>>
>>>Hi,
>>>The latest master (423e08cb7701 (origin/master, origin/HEAD) Merge
>>>branch
>>>'2020-07-28-misc-soc-improvements') seems to be broken for HiFive
>>Unleashed.
>>>
>>>It already has Bin's fix for unleashed.
>>>
>>>a0018fc8209c riscv: Make SiFive HiFive Unleashed board boot again
>>>
>>>dram start and size is corrupted for some reason. I have verified that
>>>it was initialized properly during DT parsing. However, it shows random
>>>values in the U- Boot console.
>>>
>>>=> bdinfo
>>>boot_params = 0x0000000000000000
>>>memstart = 0x0000000000000000
>>>memsize = 0x00000000
>>>flashstart = 0x0000000000000000
>>>flashsize = 0x0000000000000000
>>>flashoffset = 0x0000000000000000
>>>baudrate = 115200 bps
>>>relocaddr = 0x00000000fff84000
>>>reloc off = 0x000000007fd84000
>>>Build = 64-bit
>>>
>>>=> bdinfo
>>>boot_params = 0x9a26a361c16aa601
>>>DRAM bank = 0x0000000000000000
>>>-> start = 0x974515c3bda965ef
>>>-> size = 0x79b6f0fb37923036
>>>memstart = 0x574587c7f00570f9
>>>memsize = 0xCFD8C0F4D42668AB
>>>flashstart = 0x67f9fbb06586658b
>>>flashsize = 0xf91aed913c99b9e1
>>>flashoffset = 0x9ddbf00d69e870fa
>>>baudrate = 115200 bps
>>>
>>>v2020.07 seems to work fine. I couldn't bisect between those two as the
>>>number of commits didn't compile.
>>>
>>>--
>>>Regards,
>>>Atish
More information about the U-Boot
mailing list