U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Tianrui Wei <tianrui-wei@outlook.com>
To: u-boot@lists.denx.de
Subject: [PATCH V4 2/2] riscv: board: Support OpenPiton SoC
Date: Fri, 7 May 2021 11:48:58 +0800	[thread overview]
Message-ID: <SY4PR01MB6798404ABD113A4740ED3625F6579@SY4PR01MB6798.ausprd01.prod.outlook.com> (raw)
In-Reply-To: <cf8b3018-f4b4-d5ea-7786-3ee8874ea669@gmail.com>


On 5/7/2021 11:41 AM, Sean Anderson wrote:
> On 5/6/21 11:28 PM, Tianrui Wei wrote:
>>
>> On 5/7/2021 11:15 AM, Sean Anderson wrote:
>>> On 5/6/21 11:06 PM, Tianrui Wei wrote:
>>>> Hi Sean,
>>>>
>>>>
>>>> Many thanks again for reviewing our code! We really appreciate it. 
>>>> Will fix the things you're suggesting ;p Though I have a few 
>>>> questions in line in the comment. Also, checkpatch didn't catch any 
>>>> of the identation issues. I was wondering if there are some 
>>>> specific flags to enable some of the checks? I'm running 
>>>> ./utils/checkpatch.pl this.patch right now.
>>>>
>>>>
>>>> On 5/7/2021 10:32 AM, Sean Anderson wrote:
>>>>> On 5/5/21 11:42 PM, Tianrui Wei wrote:
>>>>>> From: Tianrui Wei <tianrui-wei@outlook.com>
>>>>>> Date: Thu, 6 May 2021 11:30:20 +0800
>>>>>> Subject: [PATCH V4 2/2] riscv: board: Support OpenPiton SoC
>>>>>>
>>>>>> This patch add board support for OpenPiton.
>>>>>
>>>>> Please add some information to the commit message describing the 
>>>>> board.
>>>>>
>>>>>>
>>>>>> Signed-off-by: Tianrui Wei <tianrui-wei@outlook.com>
>>>>>> Signed-off-by: Jonathan Balkind <jbalkind@ucsb.edu>
>>>>>> ---
>>>>>>
>>>>>> ? arch/riscv/Kconfig????????????????????? |?? 4 +
>>>>>> ? arch/riscv/dts/Makefile???????????????? |?? 1 +
>>>>>> ? arch/riscv/dts/openpiton-riscv64.dts??? | 159 +++++
>>>>>> ? board/openpiton/riscv/Kconfig?????????? |? 42 ++
>>>>>> ? board/openpiton/riscv/MAINTAINERS?????? |?? 6 +
>>>>>> ? board/openpiton/riscv/Makefile????????? |?? 5 +
>>>>>> ? board/openpiton/riscv/openpiton-riscv.c |? 41 ++
>>>>>> ? configs/openpiton_riscv64_defconfig???? | 132 ++++
>>>>>> ? doc/board/index.rst???????????????????? |?? 1 +
>>>>>> ? doc/board/openpiton/index.rst?????????? |?? 9 +
>>>>>> ? doc/board/openpiton/riscv64.rst???????? | 885 
>>>>>> ++++++++++++++++++++++++
>>>>>> ? include/configs/openpiton-riscv.h?????? |? 58 ++
>>>>>> ? 12 files changed, 1343 insertions(+)
>>>>>> ? create mode 100644 arch/riscv/dts/openpiton-riscv64.dts
>>>>>> ? create mode 100644 board/openpiton/riscv/Kconfig
>>>>>> ? create mode 100644 board/openpiton/riscv/MAINTAINERS
>>>>>> ? create mode 100644 board/openpiton/riscv/Makefile
>>>>>> ? create mode 100644 board/openpiton/riscv/openpiton-riscv.c
>>>>>> ? create mode 100644 configs/openpiton_riscv64_defconfig
>>>>>> ? create mode 100644 doc/board/openpiton/index.rst
>>>>>> ? create mode 100644 doc/board/openpiton/riscv64.rst
>>>>>> ? create mode 100644 include/configs/openpiton-riscv.h
>>>>>>
>>>>>> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
>>>>>> index 30b05408..9e7deb34 100644
>>>>>> --- a/arch/riscv/Kconfig
>>>>>> +++ b/arch/riscv/Kconfig
>>>>>> @@ -23,6 +23,9 @@ config TARGET_SIFIVE_FU540
>>>>>> ? config TARGET_SIPEED_MAIX
>>>>>> ????? bool "Support Sipeed Maix Board"
>>>>>> ? +config TARGET_OPENPITON_RISCV
>>>>>> +? bool "Support riscv cores on openpiton SoC"
>>>>>> +
>>>>>> ? endchoice
>>>>>> ??? config SYS_ICACHE_OFF
>>>>>> @@ -55,6 +58,7 @@ config SPL_SYS_DCACHE_OFF
>>>>>> ? source "board/AndesTech/ax25-ae350/Kconfig"
>>>>>> ? source "board/emulation/qemu-riscv/Kconfig"
>>>>>> ? source "board/microchip/mpfs_icicle/Kconfig"
>>>>>> +source "board/openpiton/riscv/Kconfig"
>>>>>
>>>>> Fix indentation.
>>>>
>>>>
>>>> It shows correct formatting in my client, and there's no warning in 
>>>> checkpatch for some reason
>>>
>>> Ignore this, sorry.
>>>
>>>>
>>>>
>>>>>
>>>>>> ? source "board/sifive/fu540/Kconfig"
>>>>>> ? source "board/sipeed/maix/Kconfig"
>>>>>> ? diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile
>>>>>> index 3a6f96c6..b511cd74 100644
>>>>>> --- a/arch/riscv/dts/Makefile
>>>>>> +++ b/arch/riscv/dts/Makefile
>>>>>> @@ -1,6 +1,7 @@
>>>>>> ? # SPDX-License-Identifier: GPL-2.0+
>>>>>> ??? dtb-$(CONFIG_TARGET_AX25_AE350) += ae350_32.dtb ae350_64.dtb
>>>>>> +dtb-$(CONFIG_TARGET_OPENPITON_RISCV) += openpiton-riscv64.dtb
>>>>>> ? dtb-$(CONFIG_TARGET_SIFIVE_FU540) += hifive-unleashed-a00.dtb
>>>>>> ? dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb
>>>>>> ? diff --git a/arch/riscv/dts/openpiton-riscv64.dts 
>>>>>> b/arch/riscv/dts/openpiton-riscv64.dts
>>>>>> new file mode 100644
>>>>>> index 00000000..ce732b92
>>>>>> --- /dev/null
>>>>>> +++ b/arch/riscv/dts/openpiton-riscv64.dts
>>>>>> @@ -0,0 +1,159 @@
>>>>>> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
>>>>>> +/* Copyright (c) 2021 Tianrui Wei <tianrui-wei@outlook.com> */
>>>>>> +
>>>>>> +/*
>>>>>> + * This dts is for a dual core instance of OpenPiton+Ariane built
>>>>>> + * to run on a Digilent Genesys 2 FPGA at 66.67MHz. These files
>>>>>> + * are automatically generated by the OpenPiton build system and
>>>>>> + * this configuration may not be what you need if your 
>>>>>> configuration
>>>>>> + * is different from the below.
>>>>>> + */
>>>>>> +
>>>>>> +/dts-v1/;
>>>>>> +
>>>>>> +/ {
>>>>>> +??? #address-cells = <2>;
>>>>>> +??? #size-cells = <2>;
>>>>>> +??? u-boot,dm-pre-reloc;
>>>>>> +??? compatible = "openpiton,ariane";
>>>>>> +
>>>>>> +??? chosen {
>>>>>> +?????? stdout-path = "uart0:115200";
>>>>>> +??? };
>>>>>> +
>>>>>> +??? aliases {
>>>>>> +??????? console = &uart0;
>>>>>> +??????? serial0 = &uart0;
>>>>>> +??? };
>>>>>> +
>>>>>> +??? cpus {
>>>>>> +??????? #address-cells = <1>;
>>>>>> +??????? #size-cells = <0>;
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>
>>>>> This is unnecessary since riscv_cpu has DM_FLAG_PRE_RELOC.
>>>>>
>>>>>> +??????? timebase-frequency = <520835>;
>>>>>> +
>>>>>> +??????? CPU0: cpu at 0 {
>>>>>> +??????????? clock-frequency = <66667000>;
>>>>>
>>>>> Please add a clocks node. If you just have one clock for the whole 
>>>>> soc,
>>>>> you can always use a fixed-clock binding.
>>>>>
>>>>>> +??????????? u-boot,dm-pre-reloc;
>>>>>> +??????????? device_type = "cpu";
>>>>>> +??????????? reg = <0>;
>>>>>> +??????????? status = "okay";
>>>>>> +??????????? compatible = "eth, ariane", "riscv";
>>>>>
>>>>> There should be no space after the comma. And what is "eth"? 
>>>>> Should this
>>>>> be lowrisc?
>>
>>
>> Oh eth was ETH Zurich, who developed ariane riscv64 CPU.
>>
>>
>>>>>
>>>>>> +??????????? riscv,isa = "rv64imafdc";
>>>>>> +??????????? mmu-type = "riscv,sv39";
>>>>>> +??????????? tlb-split;
>>>>>> +??????????? // HLIC - hart local interrupt controller
>>>>>> +??????????? CPU0_intc: interrupt-controller {
>>>>>> +??????????????? #interrupt-cells = <1>;
>>>>>> +??????????????? interrupt-controller;
>>>>>> +??????????????? compatible = "riscv,cpu-intc";
>>>>>> +??????????? };
>>>>>> +??????? };
>>>>>> +
>>>>>> +??????? CPU1: cpu at 1 {
>>>>>
>>>>> Same comments as above.
>>>>>
>>>>>> +??????????? clock-frequency = <66667000>;
>>>>>> +??????????? u-boot,dm-pre-reloc;
>>>>>> +??????????? device_type = "cpu";
>>>>>> +??????????? reg = <1>;
>>>>>> +??????????? status = "okay";
>>>>>> +??????????? compatible = "eth, ariane", "riscv";
>>>>>> +??????????? riscv,isa = "rv64imafdc";
>>>>>> +??????????? mmu-type = "riscv,sv39";
>>>>>> +??????????? tlb-split;
>>>>>> +??????????? // HLIC - hart local interrupt controller
>>>>>> +??????????? CPU1_intc: interrupt-controller {
>>>>>> +??????????????? #interrupt-cells = <1>;
>>>>>> +??????????????? interrupt-controller;
>>>>>> +??????????????? compatible = "riscv,cpu-intc";
>>>>>> +??????????? };
>>>>>> +??????? };
>>>>>> +
>>>>>> +??? };
>>>>>> +
>>>>>> +??? memory at 80000000 {
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>> +??????? device_type = "memory";
>>>>>> +??????? reg = < 0x00000000 0x80000000 0x00000000 0x40000000 >;
>>>>>> +??? };
>>>>>> +
>>>>>
>>>>> Everything below this line should be under a soc node.
>>>>
>>>>
>>>> Will do
>>>>
>>>>
>>>>>
>>>>>> +??? uart0: uart at fff0c2c000 {
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>
>>>>> This is unnecessary. ns16550_serial has DM_FLAG_PRE_RELOC.
>>>>>
>>>>>> +??????? compatible = "ns16550";
>>>>>> +??????? reg = < 0x000000ff 0xf0c2c000 0x00000000 0x000d4000 >;
>>>>>> +??????? clock-frequency = <66667000>;
>>>>>
>>>>> Please add a clocks 
>>>>> node.Documentation/devicetree/bindings/serial/serial.yaml
>>>>>
>>>>>> +??????? current-speed = <115200>;
>>>>>
>>>>> This is only necessary if the baud rate cannot otherwise be 
>>>>> determined.
>>>>> Please remove this.
>>>>
>>>>
>>>> Oh this was necessary to hard code
>>>
>>> Why is that? It should be possible to determine the current baud rate
>>> from the input clock and the divider.
>>
>>
>> That makes sense, will do.
>>
>>
>>>
>>>>
>>>>
>>>>>
>>>>>> +??????? interrupt-parent = <&PLIC0>;
>>>>>
>>>>> Please specify this under /soc.
>>>>>
>>>>>> +??????? interrupts = <1>;
>>>>>> +??????? reg-shift = <0>;
>>>>>> +??????? // regs are spaced on 8 bit boundary
>>>>>> +??? };
>>>>>> +
>>>>>> +??? eth: ethernet at fff0d00000 {
>>>>>> +??????? compatible = "xlnx,xps-ethernetlite-1.00.a";
>>>>>> +??????? device_type = "network";
>>>>>> +??????? reg = < 0x000000ff 0xf0d00000 0x00000000 0x00100000 >;
>>>>>> +??????? interrupt-parent = <&PLIC0>;
>>>>>> +??????? interrupts = <2>;
>>>>>> +??????? local-mac-address = [ 00 18 3E 02 E3 E5 ];
>>>>>> +??????? phy-handle = <&phy0>;
>>>>>> +??????? xlnx,duplex = <0x1>;
>>>>>> +??????? xlnx,include-global-buffers = <0x1>;
>>>>>> +??????? xlnx,include-internal-loopback = <0x0>;
>>>>>> +??????? xlnx,include-mdio = <0x1>;
>>>>>> +??????? xlnx,rx-ping-pong = <0x1>;
>>>>>> +??????? xlnx,s-axi-id-width = <0x1>;
>>>>>> +??????? xlnx,tx-ping-pong = <0x1>;
>>>>>> +??????? xlnx,use-internal = <0x0>;
>>>>>> +??????? axi_ethernetlite_0_mdio: mdio {
>>>>>> +??????????? #address-cells = <1>;
>>>>>> +??????????? #size-cells = <0>;
>>>>>> +??????????? phy0: phy at 1 {
>>>>>> +??????????????? compatible = "ethernet-phy-id001C.C915";
>>>>>> +??????????????? device_type = "ethernet-phy";
>>>>>> +??????????????? reg = <1>;
>>>>>> +??????????? };
>>>>>> +??????? };
>>>>>> +??? };
>>>>>> +
>>>>>> +??? debug-controller at fff1000000 {
>>>>>> +??????? compatible = "riscv,debug-013";
>>>>>
>>>>> Is this binding needed? Will U-Boot/Linux/whoever need to initialize
>>>>> this device?
>>>>
>>>>
>>>> I think
>>>
>>> Well, for the moment there is no driver for this in U-Boot or Linux.
>>
>>
>> Oh then I must be mistaken, will remove.
>>
>>
>>>
>>>>
>>>>
>>>>>
>>>>>> +??????? interrupts-extended = < &CPU0_intc 65535
>>>>>> +??????????????????????????????? &CPU1_intc 65535 >;
>>>>>
>>>>> Please align these.
>>>>>
>>>>>> +??????? reg = < 0x000000ff 0xf1000000 0x00000000 0x00001000 >;
>>>>>> +??????? reg-names = "control";
>>>>>> +??? };
>>>>>> +
>>>>>> +??? sdhci_0: sdhci at 0xf000000000 {
>>>>>
>>>>> No 0x prefix please.
>>>>>
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>
>>>>> Why does this need to be pre-reloc?
>>>>
>>>>
>>>> We're using it in SPL
>>>
>>> Then please use u-boot,dm-spl
>>
>>
>> Will do
>>
>>
>>>
>>>>
>>>>
>>>>>
>>>>>> +??????? status = "okay";
>>>>>> +??????? compatible = "openpiton,piton-mmc";
>>>>>> +??????? reg = < 0x000000f0 0x00000000 0x00000000 0x00300000 >;
>>>>>> +??? };
>>>>>
>>>>> Missing newline.
>>>>>
>>>>>> +??? clint at fff1020000 {
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>
>>>>> Again, unnecessary since the driver has the flag set.
>>>>>
>>>>>> +??????? compatible = "sifive,clint0";
>>>>>> +??????? interrupts-extended = < &CPU0_intc 3
>>>>>> +??????????????????????????????? &CPU0_intc 7
>>>>>> +??????????????????????????????? &CPU1_intc 3
>>>>>> +??????????????????????????????? &CPU1_intc 7 >;
>>>>>
>>>>> Please align this.
>>>>>
>>>>>> +??????? reg = < 0x000000ff 0xf1020000 0x00000000 0x000c0000 >;
>>>>>> +??????? reg-names = "control";
>>>>>
>>>>> Please add a clocks property.
>>>>>
>>>>>> +??? };
>>>>>> +
>>>>>> +??? PLIC0: plic at fff1100000 {
>>>>>> +??????? u-boot,dm-pre-reloc;
>>>>>
>>>>> Again, unnecessary.
>>>>>
>>>>>> +??????? #address-cells = <0>;
>>>>>
>>>>> Remove this.
>>>>>
>>>>>> +??????? #interrupt-cells = <1>;
>>>>>> +??????? compatible = "sifive,plic-1.0.0";
>>>>>> +??????? interrupt-controller;
>>>>>> +??????? interrupts-extended = < &CPU0_intc 11
>>>>>> +??????????????????????????????? &CPU0_intc 9
>>>>>> +??????????????????????????????? &CPU1_intc 11
>>>>>> +??????????????????????????????? &CPU1_intc 9 >;
>>>>>
>>>>> Align these please.
>>>>>
>>>>>> +??????? reg = < 0x000000ff 0xf1100000 0x00000000 0x04000000 >;
>>>>>> +??????? riscv,max-priority = <7>;
>>>>>> +??????? riscv,ndev = <2>;
>>>>>> +??? };
>>>>>
>>>>> In general, please add soc-specific compatible strings (e.g.
>>>>> "openpiton,ns16550") to allow for forward compatibility.
>>>>>
>>>>>> +
>>>>>> +};
>>>>>> +
>>>>>> diff --git a/board/openpiton/riscv/Kconfig 
>>>>>> b/board/openpiton/riscv/Kconfig
>>>>>> new file mode 100644
>>>>>> index 00000000..31ae44d5
>>>>>> --- /dev/null
>>>>>> +++ b/board/openpiton/riscv/Kconfig
>>>>>> @@ -0,0 +1,42 @@
>>>>>> +if TARGET_OPENPITON_RISCV
>>>>>> +
>>>>>> +config SYS_BOARD
>>>>>> +??? default "riscv"
>>>>>> +
>>>>>> +config SYS_VENDOR
>>>>>> +??? default "openpiton"
>>>>>> +
>>>>>> +config SYS_CPU
>>>>>> +??? default "generic"
>>>>>> +
>>>>>> +config SYS_CONFIG_NAME
>>>>>> +??? default "openpiton-riscv"
>>>>>> +
>>>>>> +config SYS_TEXT_BASE
>>>>>> +??? default 0x81000000 if SPL
>>>>>> +??? default 0x80000000 if !RISCV_SMODE
>>>>>> +??? default 0x81000000 if RISCV_SMODE
>>>>>> +
>>>>>> +config SPL_TEXT_BASE
>>>>>> +??? default 0x80000000
>>>>>> +
>>>>>> +config SPL_OPENSBI_LOAD_ADDR
>>>>>> +??? default 0x81000000
>>>>>> +
>>>>>> +config BOARD_SPECIFIC_OPTIONS # dummy
>>>>>> +??? def_bool y
>>>>>> +??? select ARCH_EARLY_INIT_R
>>>>>> +??? select SUPPORT_SPL
>>>>>> +??? imply CPU_RISCV
>>>>>> +??? imply RISCV_TIMER if (RISCV_SMODE || SPL_RISCV_SMODE)
>>>>>> +??? imply SIFIVE_CLINT if (RISCV_MMODE || SPL_RISCV_MMODE)
>>>>>> +??? imply CMD_CPU
>>>>>> +??? imply SPL_CPU_SUPPORT
>>>>>> +??? imply SPL_OPENSBI
>>>>>> +??? imply SPL_LOAD_FIT
>>>>>> +??? imply SPL_SMP
>>>>>> +??? imply SPL_MMC
>>>>>
>>>>> Fix indentation please. Did you run checkpatch?
>>>>>
>>>>>> +??? imply SMP
>>>>>> +??? imply SPL_RISCV_MMODE
>>>>>> +
>>>>>> +endif
>>>>>> diff --git a/board/openpiton/riscv/MAINTAINERS 
>>>>>> b/board/openpiton/riscv/MAINTAINERS
>>>>>> new file mode 100644
>>>>>> index 00000000..1db6fb60
>>>>>> --- /dev/null
>>>>>> +++ b/board/openpiton/riscv/MAINTAINERS
>>>>>> @@ -0,0 +1,6 @@
>>>>>> +Openpiton Riscv Bootloader
>>>>>
>>>>> OpenPiton BOARD
>>>>>
>>>>>> +M:??? Tianrui Wei<tianrui-wei@outlook.com>
>>>>>> +S:??? Maintained
>>>>>> +F:??? board/openpiton/riscv/
>>>>>
>>>>> Will there be non-riscv openpiton boards?
>>>>>
>>>>> In general, the directory layout here is
>>>>>
>>>>> board/manufacturer/board_name
>>>>>
>>>>> So who manufactures OpenPiton?
>>>>
>>>>
>>>> There will probably be, yes.
>>>>
>>>>
>>>> OpenPiton is a community project, and will continue to support 
>>>> other isas in the future ( already a few other supported now )
>>>>
>>>>
>>>>>
>>>>>> +F: include/configs/openpiton-riscv.h
>>>>>> +F:??? configs/openpiton_riscv_defconfig
>>>>>> diff --git a/board/openpiton/riscv/Makefile 
>>>>>> b/board/openpiton/riscv/Makefile
>>>>>> new file mode 100644
>>>>>> index 00000000..8cc20e7c
>>>>>> --- /dev/null
>>>>>> +++ b/board/openpiton/riscv/Makefile
>>>>>> @@ -0,0 +1,5 @@
>>>>>> +# SPDX-License-Identifier: GPL-2.0+
>>>>>> +#
>>>>>> +# Copyright (C) 2021 Tianrui Wei
>>>>>> +# Tianrui Wei <tianrui-wei@outlook.com>
>>>>>> +obj-y += openpiton-riscv.o
>>>>>> diff --git a/board/openpiton/riscv/openpiton-riscv.c 
>>>>>> b/board/openpiton/riscv/openpiton-riscv.c
>>>>>> new file mode 100644
>>>>>> index 00000000..5be407e7
>>>>>> --- /dev/null
>>>>>> +++ b/board/openpiton/riscv/openpiton-riscv.c
>>>>>> @@ -0,0 +1,41 @@
>>>>>> +// SPDX-License-Identifier: GPL-2.0+
>>>>>> +/*
>>>>>> + * Copyright (c) 2019 SiFive, Inc
>>>>>> + * Copyright (c) 2021 Tianrui Wei
>>>>>> + *
>>>>>> + *
>>>>>> + * Authors:
>>>>>> + *?? Pragnesh Patel <pragnesh.patel@sifive.com>
>>>>>> + *?? Tianrui Wei <tianrui-wei@outlook.com>
>>>>>> + */
>>>>>> +#include <common.h>
>>>>>> +#include <init.h>
>>>>>> +#include <configs/openpiton-riscv.h>
>>>>>> +#include <dm.h>
>>>>>> +#include <spl.h>
>>>>>> +
>>>>>> +#ifdef CONFIG_SPL
>>>>>> +void board_boot_order(u32 *spl_boot_list)
>>>>>> +{
>>>>>> +??? u8 i;
>>>>>> +??? u32 boot_devices[] = {
>>>>>> +??????? BOOT_DEVICE_MMC1,
>>>>>> +??? };
>>>>>> +
>>>>>> +??? for (i = 0; i < ARRAY_SIZE(boot_devices); i++)
>>>>>> +??????? spl_boot_list[i] = boot_devices[i];
>>>>>> +}
>>>>>> +#endif
>>>>>> +
>>>>>> +#ifdef CONFIG_SPL_LOAD_FIT
>>>>>> +int board_fit_config_name_match(const char *name)
>>>>>> +{
>>>>>> +??? /* boot using first FIT config */
>>>>>> +??? return 0;
>>>>>> +}
>>>>>> +#endif
>>>>>> +
>>>>>> +int board_init(void)
>>>>>> +{
>>>>>> +??????? return 0;
>>>>>> +}
>>>>>
>>>>> Do you need get_effective_memsize?
>>>>>
>>>>>> diff --git a/configs/openpiton_riscv64_defconfig 
>>>>>> b/configs/openpiton_riscv64_defconfig
>>>>>> new file mode 100644
>>>>>> index 00000000..37aa3c80
>>>>>> --- /dev/null
>>>>>> +++ b/configs/openpiton_riscv64_defconfig
>>>>>> @@ -0,0 +1,132 @@
>>>>>> +CONFIG_RISCV=y
>>>>>> +CONFIG_NR_DRAM_BANKS=1
>>>>>> +CONFIG_SPL=y
>>>>>> +CONFIG_SPL_MMC_SUPPORT=y
>>>>>> +CONFIG_DEFAULT_DEVICE_TREE="openpiton-riscv64"
>>>>>> +CONFIG_TARGET_OPENPITON_RISCV=y
>>>>>> +CONFIG_ARCH_RV64I=y
>>>>>> +CONFIG_RISCV_SMODE=y
>>>>>> +CONFIG_MISC_INIT_R=n
>>>>>> +CONFIG_SYS_MALLOC_F_LEN=0x1000
>>>>>> +CONFIG_SPL_SYS_MALLOC_F_LEN=0x100000
>>>>>> +CONFIG_SPL_PAYLOAD=""
>>>>>> +CONFIG_LIBDISK_SUPPORT=y
>>>>>> +CONFIG_NR_CPUS=32
>>>>>> +CONFIG_CMODEL_MEDANY=y
>>>>>> +CONFIG_EXPORT=n
>>>>>> +CONFIG_HASH=n
>>>>>> +CONFIG_SPL_SYS_MALLOC_SIMPLE=y
>>>>>> +CONFIG_SPL_BANNER_PRINT=n
>>>>>> +CONFIG_SPL_CRC32_SUPPORT=n
>>>>>> +CONFIG_GENERATE_SMBIOS_TABLE=n
>>>>>> +CONFIG_EFI_LOADER=n
>>>>>> +CONFIG_LIB_DATA=y
>>>>>> +CONFIG_SPL_USE_TINY_PRINTF=y
>>>>>> +CONFIG_SPL_TINY_MEMSET=y
>>>>>> +CONFIG_FS_EXT4=y
>>>>>> +CONFIG_DM_RTC=y
>>>>>> +CONFIG_SYS_NS16550=y
>>>>>> +CONFIG_SPL_OPENSBI=n
>>>>>> +CONFIG_SPL_RTC_SUPPORT=y
>>>>>> +CONFIG_SPL_FS_EXT4=y
>>>>>> +CONFIG_SPL_LEGACY_IMAGE_SUPPORT=n
>>>>>> +CONFIG_CMD_NET=n
>>>>>> +CONFIG_EFI_PARTITION=y
>>>>>> +CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=128
>>>>>> +CONFIG_EFI_PARTITION_ENTRIES_OFF=0
>>>>>> +CONFIG_SPL_EFI_PARTITION=y
>>>>>> +CONFIG_PARTITION_UUIDS=y
>>>>>> +CONFIG_OF_EMBED=y
>
> This is not allowed for mainline boards. Please use OF_SEPARATE (for
> M-mode) or OF_PRIOR_STAGE (for S-mode).


Interesting. Does it work for SPL also?


>
>>>>>> +CONFIG_HAVE_BLOCK_DEVICE=y
>>>>>> +CONFIG_CPU=y
>>>>>> +CONFIG_CPU_RISCV=y
>>>>>> +CONFIG_MMC=y
>>>>>> +CONFIG_DM_MMC=y
>>>>>> +CONFIG_SPL_DM_MMC=y
>>>>>> +CONFIG_MMC_PITON=y
>>>>>> +CONFIG_MMC_QUIRKS=y
>>>>>> +CONFIG_DEBUG_UART=y
>>>>>> +CONFIG_DEBUG_UART_NS16550=y
>>>>>> +CONFIG_DEBUG_UART_SHIFT=0
>>>>>> +CONFIG_DEBUG_UART_ANNOUNCE=y
>>>>>> +CONFIG_DEBUG_UART_SKIP_INIT=y
>>>>>> +CONFIG_DEBUG_UART_BASE=0xfff0c2c000
>>>>>> +CONFIG_DEBUG_UART_CLOCK=66667000
>>>>>> +CONFIG_SPL_LIBDISK_SUPPORT=y
>>>>>> +CONFIG_MMC_VERBOSE=n
>>>>>> +CONFIG_MMC_WRITE=n
>>>>>> +CONFIG_MMC_HW_PARTITIONING=n
>>>>>> +CONFIG_SYS_RELOC_GD_ENV_ADDR=n
>>>>>> +CONFIG_SAVEENV=n
>>>>>> +CONFIG_NET=n
>>>>>> +CONFIG_SPL_PARTITION_UUIDS=n
>>>>>> +CONFIG_CMD_EXT4=y
>>>>>> +CONFIG_CMD_FS_GENERIC=y
>>>>>> +CONFIG_CMD_READ=y
>>>>>> +CONFIG_CMD_LSBLK=y
>>>>>> +CONFIG_CMD_MMC=y
>>>>>> +CONFIG_CMD_GPT=y
>>>>>> +CONFIG_CMD_MEMINFO=y
>>>>>> +CONFIG_EXPERT=n
>>>>>> +CONFIG_ENV_VARS_UBOOT_CONFIG=y
>>>>>> +CONFIG_LEGACY_IMAGE_FORMAT=n
>>>>>> +CONFIG_ARCH_FIXUP_FDT_MEMORY=n
>>>>>> +CONFIG_MENU=y
>>>>>> +CONFIG_CMD_BOOTZ=y
>>>>>> +CONFIG_CMD_PART=y
>>>>>> +CONFIG_SHOW_REGS=y
>>>>>> +CONFIG_LOG=y
>>>>>> +CONFIG_LOGLEVEL=9
>>>>>> +CONFIG_SPL_LOGLEVEL=9
>>>>>> +CONFIG_TPL_LOGLEVEL=9
>>>>>> +CONFIG_SPL_LOG=y
>>>>>> +CONFIG_SPL_LOG_MAX_LEVEL=9
>>>>>> +CONFIG_SPL_LOG_CONSOLE=y
>>>>>> +CONFIG_LOG_ERROR_RETURN=y
>>>>>> +CONFIG_CMD_CPU=n
>>>>>> +CONFIG_BOOTM_NETBSD=n
>>>>>> +CONFIG_BOOTM_PLAN9=n
>>>>>> +CONFIG_BOOTM_RTEMS=n
>>>>>> +CONFIG_BOOTM_VXWORKS=n
>>>>>> +CONFIG_CMD_RUN=n
>>>>>> +CONFIG_CMD_IMI=n
>>>>>> +CONFIG_CMD_XIMG=n
>>>>>> +CONFIG_CMD_EXPORTENV=n
>>>>>> +CONFIG_CMD_IMPORTENV=n
>>>>>> +CONFIG_CMD_EDITENV=n
>>>>>> +CONFIG_CMD_SAVEENV=n
>>>>>> +CONFIG_CMD_CRC32=n
>>>>>> +CONFIG_CMD_RANDOM=n
>>>>>> +CONFIG_CMD_LZMADEC=n
>>>>>> +CONFIG_CMD_UNLZ4=n
>>>>>> +CONFIG_CMD_UNZIP=n
>>>>>> +CONFIG_CMD_FLASH=n
>>>>>> +CONFIG_RANDOM_UUID=n
>>>>>> +CONFIG_CMD_LOADB=n
>>>>>> +CONFIG_CMD_LOADS=n
>>>>>> +CONFIG_CMD_ECHO=n
>>>>>> +CONFIG_CMD_ITEST=n
>>>>>> +CONFIG_CMD_SOURCE=n
>>>>>> +CONFIG_CMD_SETEXPR=n
>>>>>> +CONFIG_CMD_BLOCK_CACHE=n
>>>>>> +CONFIG_CMD_DATE=n
>>>>>> +CONFIG_CMD_SLEEP=n
>>>>>> +CONFIG_CMD_SYSBOOT=y
>>>>>> +CONFIG_CMD_FAT=y
>>>>>> +CONFIG_DOS_PARTITION=y
>>>>>> +CONFIG_ISO_PARTITION=y
>>>>>> +CONFIG_DM_ETH=y
>>>>>> +CONFIG_RAM=y
>>>>>> +CONFIG_SPL_RAM=y
>>>>>> +CONFIG_FS_FAT=y
>>>>>> +CONFIG_FS_FAT_MAX_CLUSTSIZE=65536
>>>>>> +CONFIG_FS_SQUASHFS=y
>>>>>> +CONFIG_SHA1=y
>>>>>> +CONFIG_SHA256=y
>>>>>> +CONFIG_MD5=y
>>>>>> +CONFIG_ZLIB_UNCOMPRESS=y
>>>>>> +CONFIG_SPL_GZIP=y
>>>>>> +CONFIG_SPL_ZLIB=y
>>>>>> +CONFIG_GETOPT=y
>>>>>> +CONFIG_OF_LIBFDT_OVERLAY=y
>>>>>> +CONFIG_RAM_SIFIVE=n
>>>>>
>>>>> Did you generate this with "make savedefconfig"?
>>>>>
>>>>>> diff --git a/doc/board/index.rst b/doc/board/index.rst
>>>>>> index 915f1be8..51e60ac4 100644
>>>>>> --- a/doc/board/index.rst
>>>>>> +++ b/doc/board/index.rst
>>>>>> @@ -17,6 +17,7 @@ Board-specific doc
>>>>>> ???? google/index
>>>>>> ???? intel/index
>>>>>> ???? kontron/index
>>>>>> +?? openpiton/index
>>>>>
>>>>> Fix indentation
>>>>>
>>>>>> ???? renesas/index
>>>>>> ???? rockchip/index
>>>>>> ???? sifive/index
>>>>>> diff --git a/doc/board/openpiton/index.rst 
>>>>>> b/doc/board/openpiton/index.rst
>>>>>> new file mode 100644
>>>>>> index 00000000..c469102c
>>>>>> --- /dev/null
>>>>>> +++ b/doc/board/openpiton/index.rst
>>>>>> @@ -0,0 +1,9 @@
>>>>>> +.. SPDX-License-Identifier: GPL-2.0+
>>>>>> +
>>>>>> +OpenPiton
>>>>>> +=========
>>>>>> +
>>>>>> +.. toctree::
>>>>>> +?? :maxdepth: 2
>>>>>> +
>>>>>> +?? riscv64
>>>>>> diff --git a/doc/board/openpiton/riscv64.rst 
>>>>>> b/doc/board/openpiton/riscv64.rst
>>>>>> new file mode 100644
>>>>>> index 00000000..dc934bb4
>>>>>> --- /dev/null
>>>>>> +++ b/doc/board/openpiton/riscv64.rst
>>>>>> @@ -0,0 +1,885 @@
>>>>>> +.. SPDX-License-Identifier: GPL-2.0+
>>>>>> +
>>>>>> +Openpiton RISC-V SoC
>>>>>> +====================
>>>>>> +
>>>>>> +OpenPiton RISC-V SoC
>>>>>> +--------------------
>>>>>> +OpenPiton is an open source, manycore processor and research 
>>>>>> platform. It is a tiled manycore framework scalable from
>>>>>> one to 1/2 billion cores. It supports a number of ISAs including 
>>>>>> RISC-V with its P-Mesh cache coherence protocol and
>>>>>> networks on chip. It is highly configurable in both core and 
>>>>>> uncore components. OpenPiton has been verified in both ASIC
>>>>>> and multiple Xilinx FPGA prototypes running full-stack Debian linux.
>>>>>> +
>>>>>> +RISCV-V Standard Bootflow
>>>>>> +-------------------------
>>>>>> +Currently, OpenPiton implements RISC-V standard bootflow in the 
>>>>>> following steps
>>>>>> +mover.S -> u-boot-spl -> opensbi -> u-boot -> Linux
>>>>>> +This board supports S-mode u-boot as well as M-mode SPL
>>>>>> +
>>>>>> +Building OpenPition
>>>>>> +---------------------
>>>>>> +If you'd like to build OpenPiton, please go to OpenPiton github 
>>>>>> repo to build from the latest changes
>>>>>
>>>>> Please link to the github.
>>>>
>>>>
>>>> Will do
>>>>
>>>>
>>>>>
>>>>>> +
>>>>>> +Building Images
>>>>>> +---------------------------
>>>>>> +
>>>>>> +SPL
>>>>>> +---
>>>>>> +
>>>>>> +1. Add the RISC-V toolchain to your PATH.
>>>>>> +2. Setup ARCH & cross compilation environment variable:
>>>>>> +
>>>>>> +.. code-block:: none
>>>>>> +
>>>>>> +?? export CROSS_COMPILE=<riscv64 toolchain prefix>
>>>>>> +?? export ARCH=riscv
>>>>>> +
>>>>>> +3. make openpiton_riscv64_defconfig
>>>>>> +4. make
>>>>>> +
>>>>>> +U-Boot
>>>>>> +------
>>>>>> +
>>>>>> +1. Add the RISC-V toolchain to your PATH.
>>>>>> +2. Setup ARCH & cross compilation environment variable:
>>>>>> +
>>>>>> +.. code-block:: none
>>>>>> +
>>>>>> +?? export CROSS_COMPILE=<riscv64 toolchain prefix>
>>>>>> +?? export ARCH=riscv
>>>>>> +
>>>>>> +3. make openpiton_riscv64_defconfig
>>>>>> +4. make menuconfig, then change CONFIG_SYS_TEXT_BASE to 0x81020000
>>>>>
>>>>> Why isn't this the default?
>>>>
>>>>
>>>> Because u-boot SPL will just to CONFIG)SYS_TEXT_BASE ( where 
>>>> opensbi is ). If I change that, it will just jump to the wrong 
>>>> location.
>>>
>>> Can you make this dependent on S-Mode?
>>
>>
>> I'm not sure making it dependent on S-mode helpful, because in 
>> essense we need to generate u-boot and u-boot spl in 2 passes, so it 
>> had to be different
>
> U-Boot and SPL should be produced in the same pass. See e.g. SiFive 
> Unleashed.


Hmm that's only possible because they're using FIT, whereas we aren't 
though.


>
>>
>>
>>>
>>>>
>>>>
>>>>>
>>>>>> +5. make
>>>>>> +
>>>>>> +
>>>>>> +opensbi
>>>>>> +-------
>>>>>> +
>>>>>> +1. Add the RISC-V toolchain to your PATH.
>>>>>> +2. Setup ARCH & cross compilation environment variable:
>>>>>> +
>>>>>> +.. code-block:: none
>>>>>> +
>>>>>> +?? export CROSS_COMPILE=<riscv64 toolchain prefix>
>>>>>> +?? export ARCH=riscv
>>>>>> +
>>>>>> +3. Go to OpenSBI directory
>>>>>> +4. Edit platform/fpga/openpiton/config.mk, and change 
>>>>>> FW_TEXT_START to 0x81000000
>>>>>> +5. make PLATFORM=fpga/openpiton FW_PAYLOAD_PATH=<path to 
>>>>>> u-boot-nodtb.bin>
>>>>>> +
>>>>>> +
>>>>>> +Using fw_payload.bin with linux
>>>>>> +-------------------------------
>>>>>> +Put the generated fw_payload.bin into the /boot directory on the 
>>>>>> root filesystem, plug in the SD card, then flash the
>>>>>> bitstream. Linux will boot automatically.
>>>>>> +
>>>>>> +Booting
>>>>>> +-------
>>>>>> +Once you plugin the sdcard and power up, you should see the 
>>>>>> U-Boot prompt.
>>>>>> +
>>>>>> +Sample Dual-core Debian boot log from OpenPiton
>>>>>> +-----------------------------------------------
>>>>>> +
>>>>>> +.. code-block:: none
>>>>>> +
>>>>>> +? <debug_uart>
>>>>>
>>>>> Please use a log without debug uart.
>>>>
>>>>
>>>> So this is the part where it was a little confusing. Disabling 
>>>> debug uart acutally doesn't work for some reason, so we had to keep 
>>>> it open. Will submit another patch if we got it working with debug 
>>>> uart turned off.
>>>
>>> This is a bit of a strange request, but can you try adding some nops()
>>> (around 10-30) to some function (e.g. board_init). I've been having
>>> alignment problems in k210, so it could be something similar.
>>
>>
>> Hmm that was a good idea. Thanks for the suggestion!
>>
>>
>>>
>>>>>
>>>>>> +? spl_early_init
>>>>>> +? Bound device uart at fff0c2c000 to root_driver
>>>>>> +? Bound device sdhci at 0xf000000000.blk to sdhci at 0xf000000000
>>>>>> +? Bound device sdhci at 0xf000000000 to root_driver
>>>>>> +? Bound device clint at fff1020000 to root_driver
>>>>>> +? ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
>>>>>> +? get_prop_check_min_len: ranges
>>>>>> +? fdtdec_get_addr_size_auto_parent: na=1, ns=0, 
>>>>>> fdtdec_get_addr_size_fixed: reg: addr=00000000x
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: x (520835)
>>>>>> +? Bound device riscv_timer to cpu at 0
>>>>>> +? Bound device cpu at 0 to cpus
>>>>>> +? fdtdec_get_addr_size_auto_parent: na=1, ns=0, 
>>>>>> fdtdec_get_addr_size_fixed: reg: addr=00000000x
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: x (520835)
>>>>>> +? Bound device cpu at 1 to cpus
>>>>>> +? Bound device cpus to root_driver
>>>>>> +? ofnode_read_prop: riscv,isa: rv64imafdc
>>>>>> +? ofnode_read_prop: riscv,isa: rv64imafdc
>>>>>> +? ofnode_read_u32_index: clock-frequency: (not found)
>>>>>> +? fdtdec_get_addr_size_auto_parent: na=2, ns=2, 
>>>>>> fdtdec_get_addr_size_fixed: reg: addr=00000000x
>>>>>> +? sifive_clint clint at fff1020000: missing clocks or 
>>>>>> clock-frequency property; falling back on timebase-frequency
>>>>>> +? fdtdec_get_addr_size_auto_parent: na=2, ns=2, 
>>>>>> fdtdec_get_addr_size_fixed: reg: addr=00000000x
>>>>>> +? ofnode_read_u32_index: reg: x (0)
>>>>>> +? ofnode_read_u32_index: reg: x (1)
>>>>>> +? fdtdec_get_addr_size_auto_parent: na=2, ns=2, 
>>>>>> fdtdec_get_addr_size_fixed: reg: addr=00000000x
>>>>>> +? ofnode_read_u32_index: reg-offset: (not found)
>>>>>> +? ofnode_read_u32_index: reg-shift: x (0)
>>>>>> +? ofnode_read_u32_index: reg-io-width: (not found)
>>>>>> +? ofnode_read_u32_index: clock-frequency: x (66667000)
>>>>>> +? hello world from uboot spl
>>>>>> +?? Class???? Index? Probed? Driver??????????????? Name
>>>>>> + -----------------------------------------------------------
>>>>>> +???????????? 10s? -2147434144? [? ] 20s root_driver
>>>>>> +???????????? 10s? -2147433712? [? ] 20s |-- uart at fff0c2c000
>>>>>> +???????????? 10s? -2147433776? [? ] 20s |-- sdhci at 0xf000000000
>>>>>> +???????????? 10s? -2147433528? [? ] 20s |?? `-- 
>>>>>> sdhci at 0xf000000000.blk
>>>>>> +???????????? 10s? -2147433608? [? ] 20s |-- clint at fff1020000
>>>>>> +???????????? 10s? -2147434112? [? ] 20s `-- cpus
>>>>>> +???????????? 10s? -2147433552? [? ] 20s????? |-- cpu at 0
>>>>>> +???????????? 10s? -2147433608? [? ] 20s????? |?? `-- riscv_timer
>>>>>> +???????????? 10s? -2147433552? [? ] 20s????? `-- cpu at 1
>>>>>> +? >>SPL: board_init_r()
>>>>>> +? using memory lx-lx for malloc()
>>>>>> +? spl_init
>>>>>> +? Trying to boot from MMC1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? spl: mmc boot mode: fs
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? GPT: first_usable_lba: X last_usable_lba: X last lba: 22
>>>>>> +? alloc_read_gpt_entries: count = 128 * 128 = 16384
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? part_get_info_efi: start 0x800, size 0x3b71800, name
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? EXT4 features COMPAT: 0000003c INCOMPAT: 00000242 RO_COMPAT: 
>>>>>> 0000007b
>>>>>> +? EXT2 rev 1, inode_size 256, descriptor size 32
>>>>>> +? ext4fs read 0 group descriptor (blkno 1 blkoff 0)
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? Iterate dir fw_payload.bin
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? iterate >.<
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? iterate >..<
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? iterate >lost+found<
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? iterate >fw_payload.bin<
>>>>>> +? ext4fs read 1 group descriptor (blkno 1 blkoff 32)
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? mkimage signature not found - ih_magic = 50433
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? Jumping to U-Boot
>>>>>> +? loaded - jumping to U-Boot...
>>>>>> +? image entry point: 0x
>>>>>> +? ofnode_read_u32_index: reg: x (0)
>>>>>> +? ofnode_read_u32_index: reg: x (1)
>>>>>> +
>>>>>> +? OpenSBI v0.9-5-gd06cb61
>>>>>> +???? ____??????????????????? _____ ____ _____
>>>>>> +??? / __ \????????????????? / ____|? _ \_?? _|
>>>>>> +?? | |? | |_ __?? ___ _ __ | (___ | |_) || |
>>>>>> +?? | |? | | '_ \ / _ \ '_ \ \___ \|? _ < | |
>>>>>> +?? | |__| | |_) |? __/ | | |____) | |_) || |_
>>>>>> +??? \____/| .__/ \___|_| |_|_____/|____/_____|
>>>>>> +????????? | |
>>>>>> +????????? |_|
>>>>>> +
>>>>>> +? Platform Name???????????? : OPENPITON RISC-V
>>>>>> +? Platform Features???????? : timer,mfdeleg
>>>>>> +? Platform HART Count?????? : 3
>>>>>> +? Firmware Base???????????? : 0x81000000
>>>>>> +? Firmware Size???????????? : 104 KB
>>>>>> +? Runtime SBI Version?????? : 0.2
>>>>>> +
>>>>>> +? Domain0 Name????????????? : root
>>>>>> +? Domain0 Boot HART???????? : 0
>>>>>> +? Domain0 HARTs???????????? : 0*,1*,2*
>>>>>> +? Domain0 Region00????????? : 
>>>>>> 0x0000000081000000-0x000000008101ffff ()
>>>>>> +? Domain0 Region01????????? : 
>>>>>> 0x0000000000000000-0xffffffffffffffff (R,W,X)
>>>>>> +? Domain0 Next Address????? : 0x0000000081200000
>>>>>> +? Domain0 Next Arg1???????? : 0x0000000082200000
>>>>>> +? Domain0 Next Mode???????? : S-mode
>>>>>> +? Domain0 SysReset????????? : yes
>>>>>> +
>>>>>> +? Boot HART ID????????????? : 0
>>>>>> +? Boot HART Domain????????? : root
>>>>>> +? Boot HART ISA???????????? : rv64imafdcsu
>>>>>> +? Boot HART Features??????? : scounteren,mcounteren
>>>>>> +? Boot HART PMP Count?????? : 0
>>>>>> +? Boot HART PMP Granularity : 0
>>>>>> +? Boot HART PMP Address Bits: 0
>>>>>> +? Boot HART MHPM Count????? : 0
>>>>>> +? Boot HART MHPM Count????? : 0
>>>>>> +? Boot HART MIDELEG???????? : 0x0000000000000222
>>>>>> +? Boot HART MEDELEG???????? : 0x000000000000b109
>>>>>> +? <debug_uart>
>>>>>> +? initcall: 0000000081205cd0
>>>>>> +? initcall: 000000008121f82c
>>>>>> +? initcall: 000000008120992a
>>>>>> +? initcall: 000000008120b2d4
>>>>>> +? initcall: 0000000081205e92
>>>>>> +? initcall: 0000000081205cea
>>>>>> +? initcall: 0000000081205eda
>>>>>> +? initcall: 0000000081205eaa
>>>>>> +? initcall: 0000000081205eae
>>>>>> +? initcall: 0000000081205e8c
>>>>>> +? ofnode_read_bool: u-boot,dm-pre-reloc: true
>>>>>> +? Looking for 'serial' at 1040, name uart at fff0c2c000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Found seq 0
>>>>>> +? Bound device uart at fff0c2c000 to root_driver
>>>>>> +? ofnode_read_bool: u-boot,dm-pre-reloc: true
>>>>>> +? Looking for 'mmc' at 1872, name sdhci at 0xf000000000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? Looking for 'mmc' at 1872, name sdhci at 0xf000000000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? mmc_bind: alias ret=-2, devnum=-1
>>>>>> +? Bound device sdhci at 0xf000000000.blk to sdhci at 0xf000000000
>>>>>> +? Bound device sdhci at 0xf000000000 to root_driver
>>>>>> +? ofnode_read_bool: u-boot,dm-pre-reloc: true
>>>>>> +? Looking for 'timer' at 2008, name clint at fff1020000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? Bound device clint at fff1020000 to root_driver
>>>>>> +? initcall: 000000008120028a
>>>>>> +? ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
>>>>>> +? get_prop_check_min_len: ranges
>>>>>> +? ofnode_read_bool: u-boot,dm-pre-reloc: true
>>>>>> +? Looking for 'cpu' at 336, name cpu at 0
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: 0x7f283 (520835)
>>>>>> +? Bound device riscv_timer to cpu at 0
>>>>>> +? Bound device cpu at 0 to cpus
>>>>>> +? ofnode_read_bool: u-boot,dm-pre-reloc: true
>>>>>> +? Looking for 'cpu' at 644, name cpu at 1
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: 0x7f283 (520835)
>>>>>> +? Bound device cpu at 1 to cpus
>>>>>> +? Bound device cpus to root_driver
>>>>>> +? Looking for highest alias id for 'cpu'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_get_by_index_tail: Node 'cpu at 0', property 'clocks', failed 
>>>>>> to request CLK index 0: -2
>>>>>> +? Looking for highest alias id for 'cpu'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_get_by_index_tail: Node 'cpu at 1', property 'clocks', failed 
>>>>>> to request CLK index 0: -2
>>>>>> +? ofnode_read_prop: riscv,isa: rv64imafdc
>>>>>> +? initcall: 0000000081221336
>>>>>> +? initcall: 0000000081213d8c
>>>>>> +? env_init: Environment <NULL> init done (ret=0)
>>>>>> +? initcall: 0000000081205e68
>>>>>> +? initcall: 00000000812132fe
>>>>>> +? OF: ** translation for device uart at fff0c2c000 **
>>>>>> +? OF: bus is default (na=2, ns=2) on
>>>>>> +? OF: translating address: ff000000 00c0c2f0
>>>>>> +? OF: reached root node
>>>>>> +? ofnode_read_u32_index: reg-offset: (not found)
>>>>>> +? ofnode_read_u32_index: reg-shift: 0x0 (0)
>>>>>> +? ofnode_read_u32_index: reg-io-width: (not found)
>>>>>> +? clk_get_by_index_tail: Node 'uart at fff0c2c000', property 
>>>>>> 'clocks', failed to request CLK index 0: -2
>>>>>> +? ofnode_read_u32_index: clock-frequency: 0x3f941f8 (66667000)
>>>>>> +? initcall: 0000000081220592
>>>>>> +
>>>>>> +
>>>>>> +? U-Boot 2021.01-g17d45f5d-dirty (Mar 14 2021 - 20:31:58 +0800)
>>>>>> +
>>>>>> +? initcall: 0000000081205db8
>>>>>> +? U-Boot code: 81200000 -> 8123F0C0? BSS: -> 81241D10
>>>>>> +? initcall: 0000000081205cfe
>>>>>> +? initcall: 0000000081205e50
>>>>>> +? DRAM:? initcall: 0000000081200318
>>>>>> +? fdtdec_setup_mem_size_base: Initial DRAM size 40000000
>>>>>> +? initcall: 0000000081205fca
>>>>>> +? Monitor len: 00041D10
>>>>>> +? Ram size: 40000000
>>>>>> +? Ram top: C0000000
>>>>>> +? initcall: 0000000081205cee
>>>>>> +? initcall: 0000000081205eb2
>>>>>> +? initcall: 0000000081205eb6
>>>>>> +? initcall: 0000000081205eba
>>>>>> +? initcall: 0000000081205d6e
>>>>>> +? Reserving 263k for U-Boot at: bffbe000
>>>>>> +? initcall: 0000000081205f2a
>>>>>> +? Reserving 8316k for malloc() at: bf79f000
>>>>>> +? initcall: 0000000081205ee2
>>>>>> +? Reserving 112 Bytes for Board Info at: bf79ef90
>>>>>> +? initcall: 0000000081205ebe
>>>>>> +? initcall: 0000000081205d40
>>>>>> +? Reserving 384 Bytes for Global Data at: bf79ee10
>>>>>> +? initcall: 0000000081205ec2
>>>>>> +? initcall: 0000000081205ec6
>>>>>> +? initcall: 0000000081205eca
>>>>>> +? initcall: 0000000081205ede
>>>>>> +? initcall: 000000008120603a
>>>>>> +? initcall: 000000008120031c
>>>>>> +? fdtdec_setup_memory_banksize: DRAM Bank #0: start = 
>>>>>> 0x80000000, size = 0x40000000
>>>>>> +? initcall: 0000000081205f5a
>>>>>> +
>>>>>> +? RAM Configuration:
>>>>>> +? Bank #0: 80000000 1 GiB
>>>>>> +
>>>>>> +? DRAM:? 1 GiB
>>>>>> +? initcall: 0000000081206054
>>>>>> +? initcall: 0000000081205d24
>>>>>> +? New Stack Pointer is: bf79ee00
>>>>>> +? initcall: 0000000081205ece
>>>>>> +? initcall: 0000000081205ed2
>>>>>> +? initcall: 0000000081205ed6
>>>>>> +? initcall: 0000000081205de6
>>>>>> +? Relocation Offset is: 3edbe000
>>>>>> +? Relocating to bffbe000, new gd at bf79ee10, sp at bf79ee00
>>>>>> +? initcall: 0000000081205ea6
>>>>>> +? initcall: 0000000081205d02
>>>>>> +? initcall: 00000000bffc40da
>>>>>> +? initcall: 00000000bffc40de
>>>>>> +? initcall: 00000000812060ee (relocated to 00000000bffc40ee)
>>>>>> +? initcall: 0000000081206228 (relocated to 00000000bffc4228)
>>>>>> +? initcall: 00000000812061f6 (relocated to 00000000bffc41f6)
>>>>>> +? Pre-reloc malloc() used 0x990 bytes (2 KB)
>>>>>> +? using memory 0xbf79f000-0xbffbe000 for malloc()
>>>>>> +? initcall: 000000008120b2d4 (relocated to 00000000bffc92d4)
>>>>>> +? initcall: 00000000812061e2 (relocated to 00000000bffc41e2)
>>>>>> +? initcall: 000000008120622c (relocated to 00000000bffc422c)
>>>>>> +? initcall: 0000000081206230 (relocated to 00000000bffc4230)
>>>>>> +? initcall: 00000000812061cc (relocated to 00000000bffc41cc)
>>>>>> +? clk_set_defaults()
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f090
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? Looking for 'serial' at 1040, name uart at fff0c2c000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Found seq 0
>>>>>> +? Bound device uart at fff0c2c000 to root_driver
>>>>>> +? Looking for 'mmc' at 1872, name sdhci at 0xf000000000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? Looking for 'mmc' at 1872, name sdhci at 0xf000000000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? mmc_bind: alias ret=-2, devnum=-1
>>>>>> +? Bound device sdhci at 0xf000000000.blk to sdhci at 0xf000000000
>>>>>> +? Bound device sdhci at 0xf000000000 to root_driver
>>>>>> +? Looking for 'timer' at 2008, name clint at fff1020000
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? Bound device clint at fff1020000 to root_driver
>>>>>> +? initcall: 00000000812008b4 (relocated to 00000000bffbe8b4)
>>>>>> +? initcall: 000000008120623c (relocated to 00000000bffc423c)
>>>>>> +? initcall: 0000000081206234 (relocated to 00000000bffc4234)
>>>>>> +? initcall: 000000008120a64e (relocated to 00000000bffc864e)
>>>>>> +? initcall: 0000000081213400 (relocated to 00000000bffd1400)
>>>>>> +? OF: ** translation for device uart at fff0c2c000 **
>>>>>> +? OF: bus is default (na=2, ns=2) on
>>>>>> +? OF: translating address: ff000000 00c0c2f0
>>>>>> +? OF: reached root node
>>>>>> +? ofnode_read_u32_index: reg-offset: (not found)
>>>>>> +? ofnode_read_u32_index: reg-shift: 0x0 (0)
>>>>>> +? ofnode_read_u32_index: reg-io-width: (not found)
>>>>>> +? clk_get_by_index_tail: Node 'uart at fff0c2c000', property 
>>>>>> 'clocks', failed to request CLK index 0: -2
>>>>>> +? ofnode_read_u32_index: clock-frequency: 0x3f941f8 (66667000)
>>>>>> +? clk_set_defaults(uart at fff0c2c000)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f180
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? initcall: 00000000812061b0 (relocated to 00000000bffc41b0)
>>>>>> +? Now running in RAM - U-Boot at: bffbe000
>>>>>> +? initcall: 0000000081200316 (relocated to 00000000bffbe316)
>>>>>> +? ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
>>>>>> +? get_prop_check_min_len: ranges
>>>>>> +? Looking for 'cpu' at 336, name cpu at 0
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: 0x7f283 (520835)
>>>>>> +? Bound device riscv_timer to cpu at 0
>>>>>> +? Bound device cpu at 0 to cpus
>>>>>> +? Looking for 'cpu' at 644, name cpu at 1
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? Not found
>>>>>> +? ofnode_read_u32_index: timebase-frequency: (not found)
>>>>>> +? ofnode_read_u32_index: timebase-frequency: 0x7f283 (520835)
>>>>>> +? Bound device cpu at 1 to cpus
>>>>>> +? Bound device cpus to root_driver
>>>>>> +? clk_set_defaults(cpus)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f860
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? Looking for highest alias id for 'cpu'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_set_defaults(cpu at 0)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f930
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? clk_get_by_index_tail: Node 'cpu at 0', property 'clocks', failed 
>>>>>> to request CLK index 0: -2
>>>>>> +? Looking for highest alias id for 'cpu'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_set_defaults(cpu at 1)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79fac0
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? clk_get_by_index_tail: Node 'cpu at 1', property 'clocks', failed 
>>>>>> to request CLK index 0: -2
>>>>>> +? initcall: 0000000081206238 (relocated to 00000000bffc4238)
>>>>>> +? initcall: 0000000081206190 (relocated to 00000000bffc4190)
>>>>>> +? MMC:?? Looking for highest alias id for 'mmc'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_set_defaults(sdhci at 0xf000000000)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f2a0
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? sdhci at 0xf000000000: 0 (eMMC)
>>>>>> +? initcall: 0000000081206136 (relocated to 00000000bffc4136)
>>>>>> +? fdtdec_get_config_int: load-environment
>>>>>> +? Using default environment
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? initcall: 0000000081206242 (relocated to 00000000bffc4242)
>>>>>> +? initcall: 000000008120a666 (relocated to 00000000bffc8666)
>>>>>> +? initcall: 0000000081206126 (relocated to 00000000bffc4126)
>>>>>> +? initcall: 0000000081208990 (relocated to 00000000bffc6990)
>>>>>> +? In:??? uart at fff0c2c000
>>>>>> +? Out:?? uart at fff0c2c000
>>>>>> +? Err:?? uart at fff0c2c000
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? initcall: 0000000081200640 (relocated to 00000000bffbe640)
>>>>>> +? initcall: 000000008120611c (relocated to 00000000bffc411c)
>>>>>> +? fdtdec_get_config_int: bootdelay
>>>>>> +? ### main_loop entered: bootdelay=-2
>>>>>> +
>>>>>> +? fdtdec_get_config_int: kernel-offset
>>>>>> +? fdtdec_get_config_int: rootdisk-offset
>>>>>> +? fdtdec_get_config_string: bootcmd
>>>>>> +? fdtdec_get_config_int: bootsecure
>>>>>> +? ### main_loop: bootcmd="fdt addr ${fdtcontroladdr}; fdt move 
>>>>>> ${fdtcontroladdr} 0x86000000; ext4load mmc 0:1
>>>>>> 0x80200000 Image; booti 0x80200000 - 0x86000000; "
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? blk_get_devnum_by_typename: if_type=6, devnum=0: 
>>>>>> sdhci at 0xf000000000.blk, 6, 0
>>>>>> +? miss: start 0, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 0, count 1
>>>>>> +? part_init: try 'EFI': ret=0
>>>>>> +? blk_get_devnum_by_typename: Device desc 00000000bf79f590
>>>>>> +? miss: start 0, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 0, count 1
>>>>>> +? part_init: try 'EFI': ret=0
>>>>>> +? hit: start 0, count 1
>>>>>> +? miss: start 1, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 1, count 1
>>>>>> +? GPT: first_usable_lba: 22 last_usable_lba: 3B723DE last lba: 
>>>>>> 10000000
>>>>>> +? alloc_read_gpt_entries: count = 128 * 128 = 16384
>>>>>> +? miss: start 2, count 32
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? part_get_info_efi: start 0x800, size 0x3b71800, name
>>>>>> +? miss: start 802, count 2
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 802, count 2
>>>>>> +? EXT4 features COMPAT: 0000003c INCOMPAT: 00000242 RO_COMPAT: 
>>>>>> 0000007b
>>>>>> +? EXT2 rev 1, inode_size 256, descriptor size 32
>>>>>> +? ext4fs read 0 group descriptor (blkno 1 blkoff 0)
>>>>>> +? miss: start 808, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 808, count 1
>>>>>> +? miss: start bc8, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start bc8, count 1
>>>>>> +? ofnode_read_prop: tick-timer: <not found>
>>>>>> +? Looking for highest alias id for 'timer'
>>>>>> +???? - u-boot,dm-pre-reloc,
>>>>>> +???? - console, /uart at fff0c2c000
>>>>>> +???? - serial0, /uart at fff0c2c000
>>>>>> +? clk_get_by_index_tail: Node 'clint at fff1020000', property 
>>>>>> 'clocks', failed to request CLK index 0: -2
>>>>>> +? ofnode_read_u32_index: clock-frequency: (not found)
>>>>>> +? clk_set_defaults(clint at fff1020000)
>>>>>> +? clk_set_default_parents: could not read assigned-clock-parents 
>>>>>> for 00000000bf79f660
>>>>>> +? ofnode_read_prop: assigned-clock-rates: <not found>
>>>>>> +? OF: ** translation for device clint at fff1020000 **
>>>>>> +? OF: bus is default (na=2, ns=2) on
>>>>>> +? OF: translating address: ff000000 000002f1
>>>>>> +? OF: reached root node
>>>>>> +? sifive_clint clint at fff1020000: missing clocks or 
>>>>>> clock-frequency property; falling back on timebase-frequency
>>>>>> +? Iterate dir Image
>>>>>> +? miss: start cbc8, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >.<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >..<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >lost+found<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >fw_payload.bin<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >Image<
>>>>>> +? ext4fs read 1 group descriptor (blkno 1 blkoff 32)
>>>>>> +? hit: start 808, count 1
>>>>>> +? miss: start 2081, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start 2081, count 1
>>>>>> +? lmb_dump_all:
>>>>>> +????? memory.cnt???????????? = 0x1
>>>>>> +????? memory.size??????????? = 0x0
>>>>>> +????? memory.reg[0x0].base?? = 0x80000000
>>>>>> +???????????????????? .size?? = 0x40000000
>>>>>> +
>>>>>> +????? reserved.cnt?????????? = 0x0
>>>>>> +????? reserved.size????????? = 0x0
>>>>>> +? Iterate dir Image
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >.<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >..<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >lost+found<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >fw_payload.bin<
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? hit: start cbc8, count 1
>>>>>> +? iterate >Image<
>>>>>> +? ext4fs read 1 group descriptor (blkno 1 blkoff 32)
>>>>>> +? hit: start 808, count 1
>>>>>> +? hit: start 2081, count 1
>>>>>> +? miss: start bc800, count 12048
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? miss: start bf978, count 17
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? miss: start bf989, count 1
>>>>>> +? blk_find_device: if_type=6, devnum=0: sdhci at 0xf000000000.blk, 
>>>>>> 6, 0
>>>>>> +? fill: start bf989, count 1
>>>>>> +? 6492992 bytes read in 5329 ms (1.2 MiB/s)
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? *? kernel: cmdline image address = 0x80200000
>>>>>> +? ## Skipping init Ramdisk
>>>>>> +? ## No init Ramdisk
>>>>>> +???? ramdisk start = 0x00000000, ramdisk end = 0x00000000
>>>>>> +? *? fdt: cmdline image address = 0x86000000
>>>>>> +? ## Checking for 'FDT'/'FDT Image' at 86000000
>>>>>> +? *? fdt: raw FDT blob
>>>>>> +? ## Flattened Device Tree blob at 86000000
>>>>>> +???? Booting using the fdt blob at 0x86000000
>>>>>> +???? of_flat_tree at 0x86000000 size 0x00001dbb
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? ## initrd_high = 0xc0000000, copy_to_ram = 1
>>>>>> +???? ramdisk load start = 0x00000000, ramdisk load end = 0x00000000
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? using: FDT
>>>>>> +? ## device tree at 0000000086000000 ... 0000000086001dba 
>>>>>> (len=19899 [0x4DBB])
>>>>>> +???? Loading Device Tree to 00000000bfffb000, end 
>>>>>> 00000000bffffdba ... OK
>>>>>> +? Initial value for argc=3
>>>>>> +? Final value for argc=3
>>>>>> +? ## Transferring control to kernel (at address 80200000) ...
>>>>>> +
>>>>>> +? Starting kernel ...
>>>>>> +
>>>>>> +? [??? 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 
>>>>>> 0x80200000
>>>>>> +? [??? 0.000000] Linux version 5.6.0-rc4-gb9d34f7e294d-dirty 
>>>>>> (eva at eva-virtual-machine) (gcc version 7.5.0 (Ubuntu
>>>>>> 7.5.0-3ubuntu1~18.04)) #27 SMP Mon Mar 1 23:47:04 CST 2021
>>>>>> +? [??? 0.000000] earlycon: sbi0 at I/O port 0x0 (options '')
>>>>>> +? [??? 0.000000] printk: bootconsole [sbi0] enabled
>>>>>> +? [??? 0.000000] Zone ranges:
>>>>>> +? [??? 0.000000]?? DMA32??? [mem 
>>>>>> 0x0000000080200000-0x00000000bfffffff]
>>>>>> +? [??? 0.000000]?? Normal?? empty
>>>>>> +? [??? 0.000000] Movable zone start for each node
>>>>>> +? [??? 0.000000] Early memory node ranges
>>>>>> +? [??? 0.000000]?? node?? 0: [mem 
>>>>>> 0x0000000080200000-0x00000000bfffffff]
>>>>>> +? [??? 0.000000] Initmem setup node 0 [mem 
>>>>>> 0x0000000080200000-0x00000000bfffffff]
>>>>>> +? [??? 0.000000] On node 0 totalpages: 261632
>>>>>> +? [??? 0.000000]?? DMA32 zone: 4088 pages used for memmap
>>>>>> +? [??? 0.000000]?? DMA32 zone: 0 pages reserved
>>>>>> +? [??? 0.000000]?? DMA32 zone: 261632 pages, LIFO batch:63
>>>>>> +? [??? 0.000000] software IO TLB: mapped [mem 
>>>>>> 0xbaff7000-0xbeff7000] (64MB)
>>>>>> +? [??? 0.000000] SBI specification v0.2 detected
>>>>>> +? [??? 0.000000] SBI implementation ID=0x1 Version=0x9
>>>>>> +? [??? 0.000000] SBI v0.2 TIME extension detected
>>>>>> +? [??? 0.000000] SBI v0.2 IPI extension detected
>>>>>> +? [??? 0.000000] SBI v0.2 RFENCE extension detected
>>>>>> +? [??? 0.000000] SBI v0.2 HSM extension detected
>>>>>> +? [??? 0.000000] elf_hwcap is 0x112d
>>>>>> +? [??? 0.000000] percpu: Embedded 16 pages/cpu s25368 r8192 
>>>>>> d31976 u65536
>>>>>> +? [??? 0.000000] pcpu-alloc: s25368 r8192 d31976 u65536 
>>>>>> alloc=16*4096
>>>>>> +? [??? 0.000000] pcpu-alloc: [0] 0 [0] 1
>>>>>> +? [??? 0.000000] Built 1 zonelists, mobility grouping on. Total 
>>>>>> pages: 257544
>>>>>> +? [??? 0.000000] Kernel command line: earlycon=sbi 
>>>>>> root=/dev/piton_sd1
>>>>>> +? [??? 0.000000] Dentry cache hash table entries: 131072 (order: 
>>>>>> 8, 1048576 bytes, linear)
>>>>>> +? [??? 0.000000] Inode-cache hash table entries: 65536 (order: 
>>>>>> 7, 524288 bytes, linear)
>>>>>> +? [??? 0.000000] Sorting __ex_table...
>>>>>> +? [??? 0.000000] mem auto-init: stack:off, heap alloc:off, heap 
>>>>>> free:off
>>>>>> +? [??? 0.000000] Memory: 956188K/1046528K available (4357K 
>>>>>> kernel code, 286K rwdata, 1200K rodata, 168K init, 311K bss,
>>>>>> 90340K reserved, 0K cma-reserved)
>>>>>> +? [??? 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, 
>>>>>> CPUs=2, Nodes=1
>>>>>> +? [??? 0.000000] rcu: Hierarchical RCU implementation.
>>>>>> +? [??? 0.000000] rcu:???? RCU restricting CPUs from NR_CPUS=8 to 
>>>>>> nr_cpu_ids=2.
>>>>>> +? [??? 0.000000] rcu: RCU calculated value of 
>>>>>> scheduler-enlistment delay is 10 jiffies.
>>>>>> +? [??? 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, 
>>>>>> nr_cpu_ids=2
>>>>>> +? [??? 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
>>>>>> +? [??? 0.000000] plic: mapped 2 interrupts with 2 handlers for 4 
>>>>>> contexts.
>>>>>> +? [??? 0.000000] riscv_timer_init_dt: Registering clocksource 
>>>>>> cpuid [0] hartid [0]
>>>>>> +? [??? 0.000000] clocksource: riscv_clocksource: mask: 
>>>>>> 0xffffffffffffffff max_cycles: 0x1ec037a6a, max_idle_ns:
>>>>>> 7052723236599 ns
>>>>>> +? [??? 0.000147] sched_clock: 64 bits at 520kHz, resolution 
>>>>>> 1919ns, wraps every 4398046510738ns
>>>>>> +? [??? 0.009642] printk: console [hvc0] enabled
>>>>>> +? [??? 0.009642] printk: console [hvc0] enabled
>>>>>> +? [??? 0.018055] printk: bootconsole [sbi0] disabled
>>>>>> +? [??? 0.018055] printk: bootconsole [sbi0] disabled
>>>>>> +? [??? 0.028266] Calibrating delay loop (skipped), value 
>>>>>> calculated using timer frequency.. 1.04 BogoMIPS (lpj=5208)
>>>>>> +? [??? 0.038993] pid_max: default: 32768 minimum: 301
>>>>>> +? [??? 0.049869] Mount-cache hash table entries: 2048 (order: 2, 
>>>>>> 16384 bytes, linear)
>>>>>> +? [??? 0.058262] Mountpoint-cache hash table entries: 2048 
>>>>>> (order: 2, 16384 bytes, linear)
>>>>>> +? [??? 0.069225] *** VALIDATE tmpfs ***
>>>>>> +? [??? 0.089356] *** VALIDATE proc ***
>>>>>> +? [??? 0.101548] *** VALIDATE cgroup ***
>>>>>> +? [??? 0.105423] *** VALIDATE cgroup2 ***
>>>>>> +? [??? 0.144623] rcu: Hierarchical SRCU implementation.
>>>>>> +? [??? 0.164975] smp: Bringing up secondary CPUs ...
>>>>>> +? [??? 0.194931] smp: Brought up 1 node, 2 CPUs
>>>>>> +? [??? 0.216819] devtmpfs: initialized
>>>>>> +? [??? 0.247264] random: get_random_u32 called from 
>>>>>> bucket_table_alloc.isra.25+0x4e/0x15c with crng_init=0
>>>>>> +? [??? 0.267593] clocksource: jiffies: mask: 0xffffffff 
>>>>>> max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
>>>>>> +? [??? 0.278485] futex hash table entries: 512 (order: 3, 32768 
>>>>>> bytes, linear)
>>>>>> +? [??? 0.300550] NET: Registered protocol family 16
>>>>>> +? [??? 0.834379] clocksource: Switched to clocksource 
>>>>>> riscv_clocksource
>>>>>> +? [??? 0.842324] *** VALIDATE bpf ***
>>>>>> +? [??? 0.856050] *** VALIDATE ramfs ***
>>>>>> +? [??? 0.910981] NET: Registered protocol family 2
>>>>>> +? [??? 0.937371] tcp_listen_portaddr_hash hash table entries: 
>>>>>> 512 (order: 1, 8192 bytes, linear)
>>>>>> +? [??? 0.947904] TCP established hash table entries: 8192 
>>>>>> (order: 4, 65536 bytes, linear)
>>>>>> +? [??? 0.959472] TCP bind hash table entries: 8192 (order: 5, 
>>>>>> 131072 bytes, linear)
>>>>>> +? [??? 0.972158] TCP: Hash tables configured (established 8192 
>>>>>> bind 8192)
>>>>>> +? [??? 0.986974] UDP hash table entries: 512 (order: 2, 16384 
>>>>>> bytes, linear)
>>>>>> +? [??? 0.995658] UDP-Lite hash table entries: 512 (order: 2, 
>>>>>> 16384 bytes, linear)
>>>>>> +? [??? 1.010319] NET: Registered protocol family 1
>>>>>> +? [??? 1.038492] RPC: Registered named UNIX socket transport 
>>>>>> module.
>>>>>> +? [??? 1.045494] RPC: Registered udp transport module.
>>>>>> +? [??? 1.050417] RPC: Registered tcp transport module.
>>>>>> +? [??? 1.055833] RPC: Registered tcp NFSv4.1 backchannel 
>>>>>> transport module.
>>>>>> +? [??? 1.079432] Initialise system trusted keyrings
>>>>>> +? [??? 1.090919] workingset: timestamp_bits=46 max_order=18 
>>>>>> bucket_order=0
>>>>>> +? [??? 1.442287] *** VALIDATE nfs ***
>>>>>> +? [??? 1.447483] *** VALIDATE nfs4 ***
>>>>>> +? [??? 1.452686] NFS: Registering the id_resolver key type
>>>>>> +? [??? 1.458989] Key type id_resolver registered
>>>>>> +? [??? 1.464122] Key type id_legacy registered
>>>>>> +? [??? 1.468760] nfs4filelayout_init: NFSv4 File Layout Driver 
>>>>>> Registering...
>>>>>> +? [??? 1.476542] Installing knfsd (copyright (C) 1996 
>>>>>> okir at monad.swb.de).
>>>>>> +? [??? 1.979131] Key type asymmetric registered
>>>>>> +? [??? 1.984371] Asymmetric key parser 'x509' registered
>>>>>> +? [??? 1.990770] Block layer SCSI generic (bsg) driver version 
>>>>>> 0.4 loaded (major 254)
>>>>>> +? [??? 1.999112] io scheduler mq-deadline registered
>>>>>> +? [??? 2.004492] io scheduler kyber registered
>>>>>> +? [??? 4.260627] Serial: 8250/16550 driver, 4 ports, IRQ sharing 
>>>>>> disabled
>>>>>> +? [??? 4.312162] fff0c2c000.uart: ttyS0 at MMIO 0xfff0c2c000 
>>>>>> (irq = 1, base_baud = 4166687) is a 16550
>>>>>> +? [??? 4.659782] loop: module loaded
>>>>>> +? [??? 4.663995] piton_sd:v1.0 Apr 26, 2019
>>>>>> +? [??? 4.663995]
>>>>>> +? [??? 4.670302] gpt partition table header:
>>>>>> +? [??? 4.670398] signature: 5452415020494645
>>>>>> +? [??? 4.674979] revision: 10000
>>>>>> +? [??? 4.678967] size: 5c
>>>>>> +? [??? 4.681839] crc_header: 680c3ba9
>>>>>> +? [??? 4.684662] reserved: 0
>>>>>> +? [??? 4.688037] current lba: 1
>>>>>> +? [??? 4.690560] backup lda: 3b723ff
>>>>>> +? [??? 4.693880] partition entries lba: 2
>>>>>> +? [??? 4.697190] number partition entries: 80
>>>>>> +? [??? 4.700843] size partition entries: 80
>>>>>> +? [?? 10.126082]? piton_sd: piton_sd1
>>>>>> +? [?? 10.786268] libphy: Fixed MDIO Bus: probed
>>>>>> +? [?? 10.837802] NET: Registered protocol family 10
>>>>>> +? [?? 10.874758] Segment Routing with IPv6
>>>>>> +? [?? 10.880578] sit: IPv6, IPv4 and MPLS over IPv4 tunneling 
>>>>>> driver
>>>>>> +? [?? 10.905701] NET: Registered protocol family 17
>>>>>> +? [?? 10.918150] Key type dns_resolver registered
>>>>>> +? [?? 10.932005] Loading compiled-in X.509 certificates
>>>>>> +? [?? 11.147948] EXT4-fs (piton_sd1): mounted filesystem with 
>>>>>> ordered data mode. Opts: (null)
>>>>>> +? [?? 11.158370] VFS: Mounted root (ext4 filesystem) readonly on 
>>>>>> device 254:1.
>>>>>> +? [?? 11.233225] devtmpfs: mounted
>>>>>> +? [?? 11.245265] Freeing unused kernel memory: 168K
>>>>>> +? [?? 11.249963] This architecture does not have kernel memory 
>>>>>> protection.
>>>>>> +? [?? 11.257188] Run /sbin/init as init process
>>>>>> +? [?? 11.261430]?? with arguments:
>>>>>> +? [?? 11.265087]???? /sbin/init
>>>>>> +? [?? 11.267950]?? with environment:
>>>>>> +? [?? 11.271162]???? HOME=/
>>>>>> +? [?? 11.274453]???? TERM=linux
>>>>>> +? [?? 18.961333] systemd[1]: System time before build time, 
>>>>>> advancing clock.
>>>>>> +? [?? 19.340844] systemd[1]: systemd 238 running in system mode. 
>>>>>> (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT
>>>>>> +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP 
>>>>>> +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 defaul
>>>>>> +? t-hierarchy=hybrid)
>>>>>> +? [?? 19.370409] systemd[1]: Detected architecture riscv64.
>>>>>> +
>>>>>> +? Welcome to Debian GNU/Linux buster/sid!
>>>>>> +
>>>>>> +? [?? 19.587454] systemd[1]: Set hostname to <openpiton>.
>>>>>> +? [?? 29.215526] random: systemd: uninitialized urandom read (16 
>>>>>> bytes read)
>>>>>> +? [?? 29.234429] systemd[1]: Listening on /dev/initctl 
>>>>>> Compatibility Named Pipe.
>>>>>> +? [? OK? ] Listening on /dev/initctl Compatibility Named Pipe.
>>>>>> +? [?? 29.272633] random: systemd: uninitialized urandom read (16 
>>>>>> bytes read)
>>>>>> +? [?? 29.392391] systemd[1]: Created slice 
>>>>>> system-serial\x2dgetty.slice.
>>>>>> +? [? OK? ] Created slice system-serial\x2dgetty.slice.
>>>>>> +? [?? 29.423151] random: systemd: uninitialized urandom read (16 
>>>>>> bytes read)
>>>>>> +? [?? 29.441241] systemd[1]: Started Dispatch Password Requests 
>>>>>> to Console Directory Watch.
>>>>>> +? [? OK? ] Started Dispatch Password Requests to Console 
>>>>>> Directory Watch.
>>>>>> +? [?? 29.526093] systemd[1]: Created slice system-getty.slice.
>>>>>> +? [? OK? ] Created slice system-getty.slice.
>>>>>> +? [?? 29.555742] systemd[1]: Reached target Swap.
>>>>>> +? [? OK? ] Reached target Swap.
>>>>>> +? [?? 29.593093] systemd[1]: Started Forward Password Requests 
>>>>>> to Wall Directory Watch.
>>>>>> +? [? OK? ] Started Forward Password Requests to Wall Directory 
>>>>>> Watch.
>>>>>> +? [?? 29.628869] systemd[1]: Reached target Local Encrypted 
>>>>>> Volumes.
>>>>>> +? [? OK? ] Reached target Local Encrypted Volumes.
>>>>>> +? [?? 29.677206] systemd[1]: Listening on Journal Socket.
>>>>>> +? [? OK? ] Listening on Journal Socket.
>>>>>> +? [?? 29.861203] systemd[1]: Starting Remount Root and Kernel 
>>>>>> File Systems...
>>>>>> +?????????? Starting Remount Root and Kernel File Systems...
>>>>>> +? [?? 29.987658] systemd[1]: Listening on Journal Socket 
>>>>>> (/dev/log).
>>>>>> +? [? OK? ] Listening on Journal Socket (/dev/log).
>>>>>> +?????????? Starting Load Kernel Modules...
>>>>>> +?????????? Mounting Kernel Debug File System...
>>>>>> +? [? OK? ] Listening on udev Kernel Socket.
>>>>>> +? [? OK? ] Reached target Paths.
>>>>>> +?????????? Starting Journal Service...
>>>>>> +?????????? Starting Create Static Device Nodes in /dev...
>>>>>> +? [? OK? ] Reached target Remote File Systems.
>>>>>> +? [? OK? ] Reached target Slices.
>>>>>> +? [? OK? ] Listening on udev Control Socket.
>>>>>> +?????????? Starting udev Coldplug all Devices...
>>>>>> +? [? OK? ] Reached target Sockets.
>>>>>> +? [?? 34.481282] systemd[1]: Started Remount Root and Kernel 
>>>>>> File Systems.
>>>>>> +? [? OK? ] Started Remount Root and Kernel File Systems.
>>>>>> +? [?? 35.320761] systemd[1]: Started Load Kernel Modules.
>>>>>> +? [? OK? ] Started Load Kernel Modules.
>>>>>> +? [?? 35.438044] systemd[1]: Mounted Kernel Debug File System.
>>>>>> +? [? OK? ] Mounted Kernel Debug File System.
>>>>>> +? [?? 35.771088] systemd[1]: Started Create Static Device Nodes 
>>>>>> in /dev.
>>>>>> +? [? OK? ] Started Create Static Device Nodes in /dev.
>>>>>> +? [?? 36.367663] systemd[1]: Starting Apply Kernel Variables...
>>>>>> +?????????? Starting Apply Kernel Variables...
>>>>>> +? [?? 39.671147] systemd[1]: Starting Load/Save Random Seed...
>>>>>> +?????????? Starting Load/Save Random Seed...
>>>>>> +? [?? 39.737905] systemd[1]: Reached target Local File Systems 
>>>>>> (Pre).
>>>>>> +? [? OK? ] Reached target Local File Systems (Pre).
>>>>>> +? [?? 39.830756] systemd[1]: Reached target Local File Systems.
>>>>>> +? [? OK? ] Reached target Local File Systems.
>>>>>> +? [?? 40.432728] systemd[1]: Starting udev Kernel Device Manager...
>>>>>> +?????????? Starting udev Kernel Device Manager...
>>>>>> +? [?? 40.551781] systemd[1]: Started Journal Service.
>>>>>> +? [? OK? ] Started Journal Service.
>>>>>> +? [? OK? ] Started Apply Kernel Variables.
>>>>>> +?????????? Starting Raise network interfaces...
>>>>>> +?????????? Starting Flush Journal to Persistent Storage...
>>>>>> +? [? OK? ] Started Load/Save Random Seed.
>>>>>> +? [? OK? ] Started udev Kernel Device Manager.
>>>>>> +? [*???? ] (1 of 4) A start job is running for&ersistent Storage 
>>>>>> (23s / 1min 44s)[?? 53.102639] systemd-journald[93]:
>>>>>> Received request to flush runtime journal from PID 1
>>>>>> +? [? OK? ] Started Flush Journal to Persistent Storage.
>>>>>> +?????????? Starting Create Volatile Files and Directories...
>>>>>> +? [? OK? ] Started Raise network interfaces.
>>>>>> +? [? OK? ] Reached target Network.
>>>>>> +? [FAILED] Failed to start Create Volatile Files and Directories.
>>>>>> +? See 'systemctl status systemd-tmpfiles-setup.service' for 
>>>>>> details.
>>>>>> +?????????? Starting Update UTMP about System Boot/Shutdown...
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [? OK? ] Reached target System Time Synchronized.
>>>>>> +? [? OK? ] Stopped Network Time Synchronization.
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [? OK? ] Stopped Network Time Synchronization.
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [? OK? ] Stopped Network Time Synchronization.
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [? OK? ] Stopped Network Time Synchronization.
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [FAILED] Failed to start Update UTMP about System Boot/Shutdown.
>>>>>> +? See 'systemctl status systemd-update-utmp.service' for details.
>>>>>> +? [DEPEND] Dependency failed for Update UTMP about System 
>>>>>> Runlevel Changes.
>>>>>> +? [? OK? ] Stopped Network Time Synchronization.
>>>>>> +? [FAILED] Failed to start Network Time Synchronization.
>>>>>> +? See 'systemctl status systemd-timesyncd.service' for details.
>>>>>> +? [*???? ] (2 of 2) A start job is running for&v-hvc0.device 
>>>>>> (2min 6s / 4min 33s)
>>>>>> +? [? OK? ] Found device /dev/hvc0.
>>>>>> +? [? OK? ] Started udev Coldplug all Devices.
>>>>>> +? [? OK? ] Reached target System Initialization.
>>>>>> +? [? OK? ] Started Daily apt download activities.
>>>>>> +? [? OK? ] Reached target Basic System.
>>>>>> +?????????? Starting Permit User Sessions...
>>>>>> +? [? OK? ] Started Daily apt upgrade and clean activities.
>>>>>> +? [? OK? ] Started Daily Cleanup of Temporary Directories.
>>>>>> +? [? OK? ] Reached target Timers.
>>>>>> +? [? OK? ] Started Regular background program processing daemon.
>>>>>> +? [? OK? ] Started Permit User Sessions.
>>>>>> +? [? OK? ] Started Serial Getty on hvc0.
>>>>>> +? [? OK? ] Reached target Login Prompts.
>>>>>> +? [? OK? ] Reached target Multi-User System.
>>>>>> +? [? OK? ] Reached target Graphical Interface.
>>>>>> +
>>>>>> +? Debian GNU/Linux buster/sid openpiton hvc0
>>>>>> +
>>>>>> +? openpiton login: openpiton
>>>>>> +? Password:
>>>>>> +? Linux openpiton 5.6.0-rc4-gb9d34f7e294d-dirty #27 SMP Mon Mar 
>>>>>> 1 23:47:04 CST 2021 riscv64
>>>>>> +
>>>>>> +? The programs included with the Debian GNU/Linux system are 
>>>>>> free software;
>>>>>> +? the exact distribution terms for each program are described in 
>>>>>> the
>>>>>> +? individual files in /usr/share/doc/*/copyright.
>>>>>> +
>>>>>> +? Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
>>>>>> +? permitted by applicable law.
>>>>>> +? openpiton at openpiton:~$ lscpu
>>>>>> +? Architecture:??????? riscv64
>>>>>> +? Byte Order:????????? Little Endian
>>>>>> +? CPU(s):????????????? 2
>>>>>> +? On-line CPU(s) list: 0,1
>>>>>> +? Thread(s) per core:? 2
>>>>>> +? Core(s) per socket:? 1
>>>>>> +? Socket(s):?????????? 1
>>>>>> +? openpiton at openpiton:~$
>>>>>> +? openpiton at openpiton:~$
>>>>>> diff --git a/include/configs/openpiton-riscv.h 
>>>>>> b/include/configs/openpiton-riscv.h
>>>>>> new file mode 100644
>>>>>> index 00000000..0f30609b
>>>>>> --- /dev/null
>>>>>> +++ b/include/configs/openpiton-riscv.h
>>>>>> @@ -0,0 +1,58 @@
>>>>>> +/* SPDX-License-Identifier: GPL-2.0+ */
>>>>>> +/*
>>>>>> + * Copyright (c) 2019 Western Digital Corporation or its 
>>>>>> affiliates.
>>>>>> + * Copyright (c) 2021 Tianrui Wei
>>>>>> + *
>>>>>> + * Authors:
>>>>>> + *?? Anup Patel <anup.patel@wdc.com>
>>>>>> + *?? Tianrui Wei <tianrui-wei@outlook.com>
>>>>>> + */
>>>>>> +
>>>>>> +#ifndef __OPENPITON_RISCV_CONFIG_H
>>>>>> +#define __OPENPITON_RISCV_CONFIG_H
>>>>>> +
>>>>>> +#include <linux/sizes.h>
>>>>>> +#define DEBUG
>>>>>> +#ifdef CONFIG_SPL
>>>>>> +#define CONFIG_SPL_MAX_SIZE???? 0x00100000
>>>>>> +#define CONFIG_SPL_BSS_START_ADDR?? 0x82000000
>>>>>> +#define CONFIG_SPL_BSS_MAX_SIZE???? 0x00100000
>>>>>> +#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \
>>>>>> +??????? CONFIG_SPL_BSS_MAX_SIZE)
>>>>>> +#define CONFIG_SYS_SPL_MALLOC_SIZE? 0x0100000
>>>>>> +#define CONFIG_SPL_STACK??? (0x80000000 + 0x04000000 - \
>>>>>
>>>>> Please use SZ_64M here, or just use an absolute address.
>>>>
>>>>
>>>> Will fix
>>>>
>>>>
>>>>>
>>>>>> +??????? GENERATED_GBL_DATA_SIZE)
>>>>>> +
>>>>>> +#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "boot/fw_payload.bin"
>>>>>> +#define CONFIG_SPL_GD_ADDR 0x85000000
>>>>>> +#endif
>>>>>> +
>>>>>> +/* Environment options */
>>>>>> +#define CONFIG_SYS_SDRAM_BASE 0x80000000
>>>>>> +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_2M)
>>>>>> +#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_2M)
>>>>>> +#define CONFIG_SYS_MALLOC_LEN?????? SZ_256M
>>>>>> +#define CONFIG_SYS_BOOTM_LEN??????? SZ_256M
>>>>>> +
>>>>>> +/* -------------------------------------------------
>>>>>> + * Environment
>>>>>> + */
>>>>>> +//Disable persistent environment variable storage
>>>>>> +#define CONFIG_ENV_IS_NOWHERE?? 1
>>>>>> +
>>>>>> +/* 
>>>>>> --------------------------------------------------------------------- 
>>>>>>
>>>>>> + * Board boot configuration
>>>>>> + */
>>>>>> +
>>>>>> +#define CONFIG_EXTRA_ENV_SETTINGS "\0"
>>>>>
>>>>> Please define some of the raw addresses used below to make 
>>>>> modifying the
>>>>> boot process easier. For example,
>>>>>
>>>>> ??? fdt_addr_r=0x86000000
>>>>> ??? kernel_addr_r=0x80200000
>>>>> ??? image=Image
>>>>> ??? mmcdev=0
>>>>> ??? mmcpart=1
>>>>
>>>>
>>>> Good idea! Will do!
>>>>
>>>>
>>>>>
>>>>>
>>>>>> +
>>>>>> +#define CONFIG_USE_BOOTCOMMAND
>>>>>> +#define CONFIG_BOOTCOMMAND \
>>>>>> +??? "fdt addr ${fdtcontroladdr}; " \
>>>>>> +??? "fdt move ${fdtcontroladdr} 0x86000000; " \
>>>>>> +??? "ext4load mmc 0:1 0x80200000 boot/Image; " \
>>>>>
>>>>> Can you use "load" from CONFIG_CMD_FS_GENERIC?
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>>> +??? "booti 0x80200000 - 0x86000000; "
>>>>>
>>>>> Is there a bootm flow?
>>>>
>>>>
>>>> No we don't support fit yet for some hardware reasons.
>>>
>>> Can you elaborate on that? I wasn't aware of any restrictions in this
>>> area.
>>
>>
>> So OpenPiton is actually some kind of SoC generator that generates
>> different SoC on FPGA. The device tree was generated at bitstream
>> creation time to facilitate different configurations, so each board
>> can have different device trees. We're aware of any way to do this in
>> FIT.
>
> Oh, so you're saying that the devicetree is placed at a specific address
> in hardware? Does it need any fixups?


No for now we just embed it in SPL, will be converted into the bootrom 
for the chip with a small ZSBL.

Also, now that you mention fixups u-boot spl doesn't work at high 
address like 0xffffff0000 for now. Is that the case?


>
> --Sean


Thanks,

Tianrui

  reply	other threads:[~2021-05-07  3:48 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-06  3:42 [PATCH V4 2/2] riscv: board: Support OpenPiton SoC Tianrui Wei
2021-05-07  2:32 ` Sean Anderson
2021-05-07  3:06   ` Tianrui Wei
2021-05-07  3:15     ` Sean Anderson
2021-05-07  3:28       ` Tianrui Wei
2021-05-07  3:41         ` Sean Anderson
2021-05-07  3:48           ` Tianrui Wei [this message]
2021-05-07 13:03             ` Sean Anderson
2021-05-07 13:11               ` Bin Meng
2021-05-07 13:17                 ` Sean Anderson
2021-05-07 13:43                   ` Bin Meng
2021-05-08  4:59                     ` Tianrui Wei
2021-05-08  4:57               ` Tianrui Wei
2021-05-08 15:14                 ` Sean Anderson
2021-05-08 17:57                   ` Tianrui Wei
2021-05-12 16:37                   ` Tianrui Wei
2021-05-12 17:14                     ` Sean Anderson
2021-05-13  5:06                       ` Tianrui Wei
2021-05-13  6:32                         ` Bin Meng
2021-05-13  6:50                           ` Tianrui Wei
2021-05-13  7:49                             ` Bin Meng
2021-05-19  6:45                               ` Tianrui Wei

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=SY4PR01MB6798404ABD113A4740ED3625F6579@SY4PR01MB6798.ausprd01.prod.outlook.com \
    --to=tianrui-wei@outlook.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox