Hi Atish, I just sent a patch to solve this issue. https://patchwork.ozlabs.org/project/uboot/patch/20200805090053.11805-1-pragnesh.pa...@sifive.com/
Thanks, Pragnesh >-----Original Message----- >From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Pragnesh Patel >Sent: 04 August 2020 20:03 >To: Atish Patra <ati...@atishpatra.org>; Bin Meng <bmeng...@gmail.com>; >Rick Chen <r...@andestech.com> >Cc: Anup Patel <a...@brainfault.org>; Lukas Auer ><lukas.a...@aisec.fraunhofer.de>; U-Boot Mailing List <u-boot@lists.denx.de> >Subject: RE: master u-boot broken for HiFive Unleashed > >Hi Atish, > >>-----Original Message----- >>From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Pragnesh Patel >>Sent: 04 August 2020 19:55 >>To: Atish Patra <ati...@atishpatra.org>; Bin Meng <bmeng...@gmail.com>; >>Rick Chen <r...@andestech.com> >>Cc: Anup Patel <a...@brainfault.org>; Lukas Auer >><lukas.a...@aisec.fraunhofer.de>; U-Boot Mailing List >><u-boot@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@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 <ati...@atishpatra.org> >>>Sent: 30 July 2020 03:13 >>>To: U-Boot Mailing List <u-boot@lists.denx.de>; Bin Meng >>><bmeng...@gmail.com>; Rick Chen <r...@andestech.com> >>>Cc: Anup Patel <a...@brainfault.org>; Lukas Auer >>><lukas.a...@aisec.fraunhofer.de>; Pragnesh Patel >>><pragnesh.pa...@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