[PATCH V5 2/2] riscv: board: Support OpenPiton SoC
Tianrui Wei
tianrui-wei at outlook.com
Wed Jun 9 20:01:59 CEST 2021
Hi Sean,
Many thanks for reviewing our patches. I've been meaning to fix the problems
in your comments and send the next patch directly, yet ran into some new
problems :P
Apologies for the delay in replying.
On 6/7/2021 1:10 AM, Sean Anderson wrote:
> On 6/4/21 12:54 AM, Tianrui Wei wrote:
>> From: Tianrui Wei <tianrui-wei at outlook.com>
>> Date: Fri, 4 June 2021 12:45:29 +0800
>> Subject: [PATCH v5 2/2] riscv: board: Support OpenPiton SoC
>
> This patch does not apply cleanly. Your mail client may have wrapped
> some of the longer lines.
Gotcha, will use git send email in the future.
>
>>
>> This patch add board support for OpenPiton.
>
> Please add a longer commit message. It is customary to describe the
> major features of the SoC in the initial commit.
Will add longer, more verbose commit messages.
>
>>
>> Changelog:
>>
>> v5:
>> - major changes to device tree
>> - change defconfig to use OF_SEPARATE and other things
>> - change some documentation
>>
>> Signed-off-by: Tianrui Wei <tianrui-wei at outlook.com>
>> Signed-off-by: Jonathan Balkind <jbalkind at ucsb.edu>
>> ---
>>
>> arch/riscv/Kconfig | 4 +
>> arch/riscv/dts/Makefile | 1 +
>> arch/riscv/dts/openpiton-riscv64.dts | 160 +++++
>> 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, 1344 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"
>
> Is this the correct capitalization for OpenPiton?
Sorry, must have missed that somehow.
>
>> +
>> 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"
>> 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..3abeaff8
>> --- /dev/null
>> +++ b/arch/riscv/dts/openpiton-riscv64.dts
>> @@ -0,0 +1,160 @@
>> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
>> +/* Copyright (c) 2021 Tianrui Wei <tianrui-wei at 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-spl;
>
> Why is this here at the top-level?
Sorry, I just did a quick regex replace and forgot to delete this.
>
>> + compatible = "openpiton,riscv64";
>> +
>> + chosen {
>> + stdout-path = "uart0:115200";
>> + };
>> +
>> + aliases {
>> + console = &uart0;
>> + serial0 = &uart0;
>> + };
>> +
>> + cpus {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + timebase-frequency = <520835>;
>> +
>> + CPU0: cpu at 0 {
>> + clocks = <&clk0>;
>> + u-boot,dm-spl;
>> + device_type = "cpu";
>> + reg = <0>;
>> + status = "okay";
>
> This is unnecessary.
Will remove all the unnecessary status in dts.
>
>> + compatible = "openhwgroup,cva6", "riscv";
>> + 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 {
>> + clocks = <&clk0>;
>> + device_type = "cpu";
>> + reg = <1>;
>> + status = "okay";
>
> ditto
>
>> + compatible = "openhwgroup,cva6", "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";
>> + };
>> + };
>> +
>> + };
>> +
>> + clocks {
>> + clk0: osc {
>> + compatible = "fixed-clock";
>> + #clock-cells = <0>;
>> + clock-frequency = <66667000>;
>> + };
>> + };
>> +
>> + soc {
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> + compatible = "openpiton,riscv64", "simple-bus";
>
> Please use a different compatible here, since you have already used the
> one above for the whole device tree.
Will do. Thanks for the tip.
>
>> + ranges;
>> +
>> + memory at 80000000 {
>> + u-boot,dm-spl;
>> + device_type = "memory";
>> + reg = < 0x00000000 0x80000000 0x00000000 0x40000000 >;
>> + };
>
> This node should be at the top level, not under /soc.
Will do.
>
>> +
>> + uart0: uart at fff0c2c000 {
>> + compatible = "ns16550";
>
> Please add a soc-specific compatible string. E.g. "openpiton,ns16550".
> This makes it easier to address errata/quirks if they are discovered
> later.
Thanks, will do.
>
>> + reg = < 0x000000ff 0xf0c2c000 0x00000000 0x000d4000 >;
>> + interrupt-parent = <&PLIC0>;
>> + interrupts = <1>;
>> + reg-shift = <0>;
>> + // regs are spaced on 8 bit boundary
>> + };
>> +
>> + eth: ethernet at fff0d00000 {
>> + compatible = "xlnx,xps-ethernetlite-1.00.a";
>
> see above
Thanks
>
>> + device_type = "network";
>> + reg = < 0x000000ff 0xf0d00000 0x00000000 0x00100000 >;
>> + interrupt-parent = <&PLIC0>;
>> + interrupts = <2>;
>> + local-mac-address = [ 00 18 3E 02 E3 E5 ];
>
> Shouldn't this be added by fdt_fixup_ethernet?
Didn't know that before:P Will investigate this function.
>
>> + 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>;
>> + };
>> + };
>> + };
>> +
>> + sdhci_0: sdhci at f000000000 {
>> + u-boot,dm-spl;
>> + status = "okay";
>> + compatible = "openpiton,piton-mmc";
>
> see above
I assume this is about the compatible string?
>
>> + reg = < 0x000000f0 0x00000000 0x00000000 0x00300000 >;
>> + };
>> +
>> + clint at fff1020000 {
>> + compatible = "sifive,clint0";
>
> Please add a
Will add compatible string
>
>> + interrupts-extended = < &CPU0_intc 3
>> + &CPU0_intc 7
>> + &CPU1_intc 3
>> + &CPU1_intc 7 >;
>
> Nit: alignment
I still don't see alignment problems in my client. Hopefully git send-email
will solve the problem
>
>> + reg = < 0x000000ff 0xf1020000 0x00000000 0x000c0000 >;
>> + reg-names = "control";
>
> Is this used anywhere?
Will remove.
>
>> + clocks = <&clk0>;
>> + };
>> +
>> + PLIC0: plic at fff1100000 {
>> + u-boot,dm-spl;
>> + #interrupt-cells = <1>;
>> + compatible = "sifive,plic-1.0.0";
>
> see above
Will do.
>
>> + interrupt-controller;
>> + interrupts-extended = < &CPU0_intc 11
>> + &CPU0_intc 9
>> + &CPU1_intc 11
>> + &CPU1_intc 9 >;
>
> Nit: alignment
Same as above
>
>> + reg = < 0x000000ff 0xf1100000 0x00000000 0x04000000 >;
>> + riscv,max-priority = <7>;
>> + riscv,ndev = <2>;
>> + };
>> + };
>> +};
>> +
>> 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
>> + imply SMP
>> + imply SPL_RISCV_MMODE
>
> Nit: alignment
Same as above
>
>> +
>> +endif
>> diff --git a/board/openpiton/riscv/MAINTAINERS
>> b/board/openpiton/riscv/MAINTAINERS
>> new file mode 100644
>> index 00000000..d5800545
>> --- /dev/null
>> +++ b/board/openpiton/riscv/MAINTAINERS
>> @@ -0,0 +1,6 @@
>> +Openpiton BOARD
>> +M: Tianrui Wei<tianrui-wei at outlook.com>
>> +S: Maintained
>> +F: board/openpiton/riscv/
>> +F: include/configs/openpiton-riscv.h
>> +F: configs/openpiton_riscv_defconfig
>
> Please add the mmc driver as well.
Will do.
>
>> 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 at 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 at sifive.com>
>> + * Tianrui Wei <tianrui-wei at 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;
>> +}
>
> Can you check to see if this is still needed since d442f69399 ("common:
> fit: Add weak board_fit_config_name_match")?
Will check
>
>> +#endif
>> +
>> +int board_init(void)
>> +{
>> + return 0;
>> +}
>> diff --git a/configs/openpiton_riscv64_defconfig
>> b/configs/openpiton_riscv64_defconfig
>> new file mode 100644
>> index 00000000..be4c621d
>> --- /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_SEPARATE=y
>> +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
>
> Please do not enable the debug uart by default.
This is partly what have been stalling me. We have some
quirks so that we can only boot linux with certain configs and
debug output. We're actively looking into that issue.
>
>> +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
>
> Please leave the log level at its default value.
Will do
>
>> +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
>
> Was this generated with `make savedefconfig`?
Will regenerate
>
>> 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
>> 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..7227a262
>> --- /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.
>
> Please wrap this line. In general, all files should be wrapped at 80
> characters unless there is a readability improvement.
Will do
>
>> +
>> +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(at
>> https://apac01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FPrincetonUniversity%2Fopenpiton&data=04%7C01%7C%7C8214fce6421042afd85f08d9290df558%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637585962200418065%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ms9B5gAg6a51xwZvju4knNQWrGWxCjUZt1SvpC%2BP69o%3D&reserved=0)
>> to build from the latest changes
>> +
>> +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 is this different from the default in Kconfig above?
Will split defconfigs into 2, one for u-boot proper and another for spl.
That will solve
this issue.
>
>> +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
>
> Why isn't this the default?
I'm currently resolving this. Thanks for the input.
>
>> +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
>> +
>
> Don't enable all this debug output, please (see above).
See above for reason of needing debug output. Will eliminate in next
patches if possible
>
>> + <debug_uart>
>> + 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:~$
>
> Duplicate line.
Thanks!
>
>> 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 at wdc.com>
>> + * Tianrui Wei <tianrui-wei at 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
>
> Can this be calculated from the other values here?
This size is fixed for our bootrom size
>
>> +#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 - \
>> + 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"
>> +
>> +#define CONFIG_USE_BOOTCOMMAND
>> +#define CONFIG_BOOTCOMMAND \
>> + "fdt addr ${fdtcontroladdr}; " \
>> + "fdt move ${fdtcontroladdr} 0x86000000; " \
>> + "ext4load mmc 0:1 0x80200000 boot/Image; " \
>> + "booti 0x80200000 - 0x86000000; "
>
> Please use some variables here, as suggsted on your last revision.
Sorry I missed that. Will update in the next patch.
Many thanks,
Tianrui
>
> --Sean
>
>> +
>> +#define CONFIG_TIMESTAMP /* Print image info with timestamp */
>> +
>> +#endif/* __CONFIG_H */
>>
>
More information about the U-Boot
mailing list