All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pragnesh Patel <pragnesh.patel@sifive.com>
To: u-boot@lists.denx.de
Subject: master u-boot broken for HiFive Unleashed
Date: Tue, 4 Aug 2020 14:33:24 +0000	[thread overview]
Message-ID: <MN2PR13MB2797951AC227BD2D3C77AADBE54A0@MN2PR13MB2797.namprd13.prod.outlook.com> (raw)
In-Reply-To: <MN2PR13MB2797776082FED49FDB5F0BC7E54A0@MN2PR13MB2797.namprd13.prod.outlook.com>

Hi Atish,

>-----Original Message-----
>From: U-Boot <u-boot-bounces@lists.denx.de> On Behalf Of Pragnesh Patel
>Sent: 04 August 2020 19:55
>To: Atish Patra <atishp@atishpatra.org>; Bin Meng <bmeng.cn@gmail.com>;
>Rick Chen <rick@andestech.com>
>Cc: Anup Patel <anup@brainfault.org>; Lukas Auer
><lukas.auer@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 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@atishpatra.org>
>>Sent: 30 July 2020 03:13
>>To: U-Boot Mailing List <u-boot@lists.denx.de>; Bin Meng
>><bmeng.cn@gmail.com>; Rick Chen <rick@andestech.com>
>>Cc: Anup Patel <anup@brainfault.org>; Lukas Auer
>><lukas.auer@aisec.fraunhofer.de>; Pragnesh Patel
>><pragnesh.patel@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

  reply	other threads:[~2020-08-04 14:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-29 21:43 master u-boot broken for HiFive Unleashed Atish Patra
2020-08-03  4:26 ` Bin Meng
2020-08-04  1:02   ` Atish Patra
2020-08-04 14:25 ` Pragnesh Patel
2020-08-04 14:33   ` Pragnesh Patel [this message]
2020-08-05  9:03     ` Pragnesh Patel
2020-08-09 20:17     ` Atish Patra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR13MB2797951AC227BD2D3C77AADBE54A0@MN2PR13MB2797.namprd13.prod.outlook.com \
    --to=pragnesh.patel@sifive.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.