master u-boot broken for HiFive Unleashed

Pragnesh Patel pragnesh.patel at sifive.com
Tue Aug 4 16:25:11 CEST 2020


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.

>-----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