Re: Testing the recent RISC-V DT patchsets

From: Atish Patra
Date: Wed May 29 2019 - 13:12:54 EST


On 5/29/19 3:04 AM, Loys Ollivier wrote:
On Wed 29 May 2019 at 00:50, Atish Patra <atish.patra@xxxxxxx> wrote:

On 5/28/19 8:36 AM, Karsten Merker wrote:
On Tue, May 28, 2019 at 05:10:42PM +0200, Loys Ollivier wrote:
On Tue 28 May 2019 at 01:32, Paul Walmsley <paul.walmsley@xxxxxxxxxx> wrote:

An update for those testing RISC-V patches: here's a new branch of
riscv-pk/bbl that doesn't try to read or modify the DT data at all, which
should be useful until U-Boot settles down.
[...]
Here is an Linux kernel branch with updated DT data that can be booted
with the above bootloader:

https://github.com/sifive/riscv-linux/tree/dev/paulw/dts-v5.2-rc1-experimental

A sample boot log follows, using a 'defconfig' build from that branch.

Thanks Paul, I can confirm that it works.

Something is still unclear to myself.
Using FSBL + riscv-pk/bbl the linux kernel + device tree boots.
Neither FSBL nor riscv-pk/bbl are modifying the DT.

Using FSBL + OpenSBI + U-Boot the same kernel + device tree hangs on
running /init.

Would you have any pointer on what riscv-pk does that OpenSBI/U-boot doesn't ?
Or maybe it is the other way around - OpenSBI/U-boot does something that
extra that should not happen.

Hello,

I don't know which version of OpenSBI you are using, but there is
a problem with the combination of kernel 5.2-rc1 and OpenSBI
versions before commit

https://github.com/riscv/opensbi/commit/4e2cd478208531c47343290f15b577d40c82649c

that can result in a hang on executing init, so in case you
should be using an older OpenSBI build that might be the source
of the problem that you are experiencing.

Regards,
Karsten


I verified the updated DT with upstream kernel for the boot flow OpenSBI
+ U-Boot + Linux or OpenSBI + Linux.

OpenSBI should be compiled for sifive platform with following additional
argument

FW_PAYLOAD_FDT_PATH=<linux kernel
source>/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dtb

FYI: It will only work when kernel is given a payload to U-Boot/OpenSBI
directly.


Hum, I am surprised by this statement.

That's because U-Boot also using the new DT. With FW_PAYLOAD_FDT_PATH, OpenSBI ignores the DT from FSBL and U-Boot gets the updated DT from OpenSBI.


I was able to verify the latest DT patch serie from Paul with:
OpenSBI + U-Boot + Linux & DT.

Following the OpenSBI documentation [0] with U-Boot payload:
FW_PAYLOAD_PATH=<u-boot_build_dir>/u-boot.bin

I get an U-Boot prompt and then I can just load the linux kernel and
device tree from the network.


Cool. This approach will also work where DT is loaded separately after U-Boot is booted.

[0]: https://github.com/riscv/opensbi/blob/master/docs/platform/sifive_fu540.md#building-sifive-fu540-platform

Network booting is still not working as the clock driver probe doesn't
happen because of the updated DT.

--
Regards,
Atish



--
Regards,
Atish