hw/riscv/Makefile.objs | 4 +- hw/riscv/riscv_hart.c | 75 ++++++-- hw/riscv/sifive_e.c | 27 ++- hw/riscv/{sifive_prci.c => sifive_e_prci.c} | 16 +- hw/riscv/sifive_u.c | 185 ++++++++++++++------ hw/riscv/sifive_u_otp.c | 194 +++++++++++++++++++++ hw/riscv/sifive_u_prci.c | 163 +++++++++++++++++ hw/riscv/virt.c | 40 ++--- include/hw/riscv/sifive_cpu.h | 31 ++++ include/hw/riscv/sifive_e.h | 7 +- .../hw/riscv/{sifive_prci.h => sifive_e_prci.h} | 16 +- include/hw/riscv/sifive_u.h | 22 +-- include/hw/riscv/sifive_u_otp.h | 90 ++++++++++ include/hw/riscv/sifive_u_prci.h | 100 +++++++++++ pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 40968 -> 45064 bytes roms/Makefile | 4 +- 16 files changed, 830 insertions(+), 144 deletions(-) rename hw/riscv/{sifive_prci.c => sifive_e_prci.c} (88%) create mode 100644 hw/riscv/sifive_u_otp.c create mode 100644 hw/riscv/sifive_u_prci.c create mode 100644 include/hw/riscv/sifive_cpu.h rename include/hw/riscv/{sifive_prci.h => sifive_e_prci.h} (80%) create mode 100644 include/hw/riscv/sifive_u_otp.h create mode 100644 include/hw/riscv/sifive_u_prci.h
As of today, the QEMU 'sifive_u' machine is a special target that does not boot the upstream OpenSBI/U-Boot firmware images built for the real SiFive HiFive Unleashed board. Hence OpenSBI supports a special platform "qemu/sifive_u". For U-Boot, the sifive_fu540_defconfig is referenced in the OpenSBI doc as its payload, but that does not boot at all due to various issues in current QEMU 'sifive_u' machine codes. This series aims to improve the emulation fidelity of sifive_u machine, so that the upstream OpenSBI, U-Boot and kernel images built for the SiFive HiFive Unleashed board can be used out of the box without any special hack. The major changes include: - Heterogeneous harts creation supported, so that we can create a CPU that exactly mirrors the real hardware: 1 E51 + 4 U54. - Implemented a PRCI model for FU540 - Implemented an OTP model for FU540, primarily used for storing serial number of the board - Fixed GEM support that was seriously broken on sifive_u - Synced device tree with upstream Linux kernel on sifive_u - Adding initramfs loading support on sifive_u OpenSBI v0.4 image built for sifive/fu540 is included as the default bios image for 'sifive_u' machine. The series is tested against OpenSBI v0.4 image for sifive/fu540 paltform, U-Boot v2019.10-rc1 image for sifive_fu540_defconfig, and Linux kernel v5.3-rc3 image with the following patch: macb: Update compatibility string for SiFive FU540-C000 https://patchwork.kernel.org/patch/11050003/ OpenSBI + U-Boot, ping/tftpboot with U-Boot MACB driver works well. Boot Linux 64-bit defconfig image, verified that system console on the serial 0 and ping host work pretty well. An OpenSBI patch was sent to drop the special "qemu/sifive_u" platform support in OpenSBI. It will be applied after this QEMU series is merged. http://lists.infradead.org/pipermail/opensbi/2019-August/000335.html Changes in v3: - changed to use macros for management and compute cpu count - use management cpu count + 1 for the min_cpus - update IRQ numbers of both UARTs to match hardware as well Changes in v2: - fixed the "interrupts-extended" property size - update the file header to indicate at least 2 harts are created - use create_unimplemented_device() to create the GEM management block instead of sifive_mmio_emulate() - add "phy-handle" property to the ethernet node - keep the PLIC compatible string unchanged as OpenSBI uses that for DT fix up - drop patch "riscv: sifive: Move sifive_mmio_emulate() to a common place" - new patch "riscv: sifive_e: Drop sifive_mmio_emulate()" Bin Meng (28): riscv: hw: Remove superfluous "linux,phandle" property riscv: hw: Use qemu_fdt_setprop_cell() for property with only 1 cell riscv: Add a sifive_cpu.h to include both E and U cpu type defines riscv: hart: Extract hart realize to a separate routine riscv: hart: Support heterogeneous harts population riscv: sifive_u: Update hart configuration to reflect the real FU540 SoC riscv: sifive_u: Set the minimum number of cpus to 2 riscv: sifive_u: Update PLIC hart topology configuration string riscv: sifive_u: Update UART base addresses and IRQs riscv: sifive_u: Remove the unnecessary include of prci header riscv: sifive: Rename sifive_prci.{c,h} to sifive_e_prci.{c,h} riscv: sifive_e: prci: Fix a typo of hfxosccfg register programming riscv: sifive_e: prci: Update the PRCI register block size riscv: sifive: Implement PRCI model for FU540 riscv: sifive_u: Generate hfclk and rtcclk nodes riscv: sifive_u: Add PRCI block to the SoC riscv: sifive_u: Change UART node name in device tree riscv: hw: Implement a model for SiFive FU540 OTP riscv: sifive_u: Instantiate OTP memory with a serial number riscv: roms: Update default bios for sifive_u machine riscv: sifive_u: Update UART and ethernet node clock properties riscv: sifive_u: Generate an aliases node in the device tree riscv: sifive_u: Fix broken GEM support riscv: sifive_u: Support loading initramfs riscv: hw: Remove not needed PLIC properties in device tree riscv: sifive_e: Drop sifive_mmio_emulate() riscv: virt: Change create_fdt() to return void riscv: sifive_u: Update model and compatible strings in device tree hw/riscv/Makefile.objs | 4 +- hw/riscv/riscv_hart.c | 75 ++++++-- hw/riscv/sifive_e.c | 27 ++- hw/riscv/{sifive_prci.c => sifive_e_prci.c} | 16 +- hw/riscv/sifive_u.c | 185 ++++++++++++++------ hw/riscv/sifive_u_otp.c | 194 +++++++++++++++++++++ hw/riscv/sifive_u_prci.c | 163 +++++++++++++++++ hw/riscv/virt.c | 40 ++--- include/hw/riscv/sifive_cpu.h | 31 ++++ include/hw/riscv/sifive_e.h | 7 +- .../hw/riscv/{sifive_prci.h => sifive_e_prci.h} | 16 +- include/hw/riscv/sifive_u.h | 22 +-- include/hw/riscv/sifive_u_otp.h | 90 ++++++++++ include/hw/riscv/sifive_u_prci.h | 100 +++++++++++ pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 40968 -> 45064 bytes roms/Makefile | 4 +- 16 files changed, 830 insertions(+), 144 deletions(-) rename hw/riscv/{sifive_prci.c => sifive_e_prci.c} (88%) create mode 100644 hw/riscv/sifive_u_otp.c create mode 100644 hw/riscv/sifive_u_prci.c create mode 100644 include/hw/riscv/sifive_cpu.h rename include/hw/riscv/{sifive_prci.h => sifive_e_prci.h} (80%) create mode 100644 include/hw/riscv/sifive_u_otp.h create mode 100644 include/hw/riscv/sifive_u_prci.h -- 2.7.4
On Sun, Aug 11, 2019 at 4:07 PM Bin Meng <bmeng.cn@gmail.com> wrote: > > As of today, the QEMU 'sifive_u' machine is a special target that does > not boot the upstream OpenSBI/U-Boot firmware images built for the real > SiFive HiFive Unleashed board. Hence OpenSBI supports a special platform > "qemu/sifive_u". For U-Boot, the sifive_fu540_defconfig is referenced > in the OpenSBI doc as its payload, but that does not boot at all due > to various issues in current QEMU 'sifive_u' machine codes. > > This series aims to improve the emulation fidelity of sifive_u machine, > so that the upstream OpenSBI, U-Boot and kernel images built for the > SiFive HiFive Unleashed board can be used out of the box without any > special hack. > > The major changes include: > - Heterogeneous harts creation supported, so that we can create a CPU > that exactly mirrors the real hardware: 1 E51 + 4 U54. > - Implemented a PRCI model for FU540 > - Implemented an OTP model for FU540, primarily used for storing serial > number of the board > - Fixed GEM support that was seriously broken on sifive_u > - Synced device tree with upstream Linux kernel on sifive_u > - Adding initramfs loading support on sifive_u > > OpenSBI v0.4 image built for sifive/fu540 is included as the default > bios image for 'sifive_u' machine. > > The series is tested against OpenSBI v0.4 image for sifive/fu540 > paltform, U-Boot v2019.10-rc1 image for sifive_fu540_defconfig, > and Linux kernel v5.3-rc3 image with the following patch: > > macb: Update compatibility string for SiFive FU540-C000 > https://patchwork.kernel.org/patch/11050003/ > > OpenSBI + U-Boot, ping/tftpboot with U-Boot MACB driver works well. > Boot Linux 64-bit defconfig image, verified that system console on > the serial 0 and ping host work pretty well. > > An OpenSBI patch was sent to drop the special "qemu/sifive_u" platform > support in OpenSBI. It will be applied after this QEMU series is merged. > http://lists.infradead.org/pipermail/opensbi/2019-August/000335.html > > Changes in v3: > - changed to use macros for management and compute cpu count > - use management cpu count + 1 for the min_cpus > - update IRQ numbers of both UARTs to match hardware as well > > Changes in v2: > - fixed the "interrupts-extended" property size > - update the file header to indicate at least 2 harts are created > - use create_unimplemented_device() to create the GEM management > block instead of sifive_mmio_emulate() > - add "phy-handle" property to the ethernet node > - keep the PLIC compatible string unchanged as OpenSBI uses that > for DT fix up > - drop patch "riscv: sifive: Move sifive_mmio_emulate() to a common place" > - new patch "riscv: sifive_e: Drop sifive_mmio_emulate()" > > Bin Meng (28): > riscv: hw: Remove superfluous "linux,phandle" property > riscv: hw: Use qemu_fdt_setprop_cell() for property with only 1 cell > riscv: Add a sifive_cpu.h to include both E and U cpu type defines > riscv: hart: Extract hart realize to a separate routine > riscv: hart: Support heterogeneous harts population > riscv: sifive_u: Update hart configuration to reflect the real FU540 > SoC > riscv: sifive_u: Set the minimum number of cpus to 2 > riscv: sifive_u: Update PLIC hart topology configuration string > riscv: sifive_u: Update UART base addresses and IRQs > riscv: sifive_u: Remove the unnecessary include of prci header > riscv: sifive: Rename sifive_prci.{c,h} to sifive_e_prci.{c,h} > riscv: sifive_e: prci: Fix a typo of hfxosccfg register programming > riscv: sifive_e: prci: Update the PRCI register block size > riscv: sifive: Implement PRCI model for FU540 > riscv: sifive_u: Generate hfclk and rtcclk nodes > riscv: sifive_u: Add PRCI block to the SoC > riscv: sifive_u: Change UART node name in device tree > riscv: hw: Implement a model for SiFive FU540 OTP > riscv: sifive_u: Instantiate OTP memory with a serial number > riscv: roms: Update default bios for sifive_u machine > riscv: sifive_u: Update UART and ethernet node clock properties > riscv: sifive_u: Generate an aliases node in the device tree > riscv: sifive_u: Fix broken GEM support > riscv: sifive_u: Support loading initramfs > riscv: hw: Remove not needed PLIC properties in device tree > riscv: sifive_e: Drop sifive_mmio_emulate() > riscv: virt: Change create_fdt() to return void > riscv: sifive_u: Update model and compatible strings in device tree > I have no idea on why patch [20/28] and [26/28] failed to arrive on the mailing list. The "git send-email" logs said OK when these two patches were sent. In v2, these 2 patches are missing on patchwork, and unfortunately this is the same situation for v3. Attached these 2 patches. Regards, Bin From e8bb57b3423b096f1efc851e0361232fde205f09 Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Sat, 3 Aug 2019 13:48:24 +0800 Subject: [PATCH v3 20/28] riscv: roms: Update default bios for sifive_u machine With the support of heterogeneous harts and PRCI model, it's now possible to use the opensbi image built for the real hardware. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> --- This patch should be applied after http://patchwork.ozlabs.org/patch/1141443/ Changes in v3: None Changes in v2: None pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 40968 -> 45064 bytes roms/Makefile | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin index 5d7a1ef6818994bac4a36818ad36043b592ce309..f29b3bed6fa8b57a735436d9c684740aa0a6bb16 100755 GIT binary patch delta 10830 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 delta 5317 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 diff --git a/roms/Makefile b/roms/Makefile index 775c963..6cf07d3 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -182,8 +182,8 @@ opensbi64-virt: opensbi64-sifive_u: $(MAKE) -C opensbi \ CROSS_COMPILE=$(riscv64_cross_prefix) \ - PLATFORM="qemu/sifive_u" - cp opensbi/build/platform/qemu/sifive_u/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin + PLATFORM="sifive/fu540" + cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin clean: rm -rf seabios/.config seabios/out seabios/builds -- 2.7.4 From b611512239ea23629d89bbcdf12fe8ee6a0459c1 Mon Sep 17 00:00:00 2001 From: Bin Meng <bmeng.cn@gmail.com> Date: Wed, 7 Aug 2019 14:56:09 +0800 Subject: [PATCH v3 26/28] riscv: sifive_e: Drop sifive_mmio_emulate() Use create_unimplemented_device() instead. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> --- Changes in v3: None Changes in v2: - drop patch "riscv: sifive: Move sifive_mmio_emulate() to a common place" - new patch "riscv: sifive_e: Drop sifive_mmio_emulate()" hw/riscv/sifive_e.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index 2d67670..040d59f 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -37,6 +37,7 @@ #include "hw/loader.h" #include "hw/sysbus.h" #include "hw/char/serial.h" +#include "hw/misc/unimp.h" #include "target/riscv/cpu.h" #include "hw/riscv/riscv_hart.h" #include "hw/riscv/sifive_plic.h" @@ -74,14 +75,6 @@ static const struct MemmapEntry { [SIFIVE_E_DTIM] = { 0x80000000, 0x4000 } }; -static void sifive_mmio_emulate(MemoryRegion *parent, const char *name, - uintptr_t offset, uintptr_t length) -{ - MemoryRegion *mock_mmio = g_new(MemoryRegion, 1); - memory_region_init_ram(mock_mmio, NULL, name, length, &error_fatal); - memory_region_add_subregion(parent, offset, mock_mmio); -} - static void riscv_sifive_e_init(MachineState *machine) { const struct MemmapEntry *memmap = sifive_e_memmap; @@ -172,7 +165,7 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp) sifive_clint_create(memmap[SIFIVE_E_CLINT].base, memmap[SIFIVE_E_CLINT].size, ms->smp.cpus, SIFIVE_SIP_BASE, SIFIVE_TIMECMP_BASE, SIFIVE_TIME_BASE); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.aon", + create_unimplemented_device("riscv.sifive.e.aon", memmap[SIFIVE_E_AON].base, memmap[SIFIVE_E_AON].size); sifive_e_prci_create(memmap[SIFIVE_E_PRCI].base); @@ -199,19 +192,19 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp) sifive_uart_create(sys_mem, memmap[SIFIVE_E_UART0].base, serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART0_IRQ)); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.qspi0", + create_unimplemented_device("riscv.sifive.e.qspi0", memmap[SIFIVE_E_QSPI0].base, memmap[SIFIVE_E_QSPI0].size); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.pwm0", + create_unimplemented_device("riscv.sifive.e.pwm0", memmap[SIFIVE_E_PWM0].base, memmap[SIFIVE_E_PWM0].size); sifive_uart_create(sys_mem, memmap[SIFIVE_E_UART1].base, serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART1_IRQ)); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.qspi1", + create_unimplemented_device("riscv.sifive.e.qspi1", memmap[SIFIVE_E_QSPI1].base, memmap[SIFIVE_E_QSPI1].size); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.pwm1", + create_unimplemented_device("riscv.sifive.e.pwm1", memmap[SIFIVE_E_PWM1].base, memmap[SIFIVE_E_PWM1].size); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.qspi2", + create_unimplemented_device("riscv.sifive.e.qspi2", memmap[SIFIVE_E_QSPI2].base, memmap[SIFIVE_E_QSPI2].size); - sifive_mmio_emulate(sys_mem, "riscv.sifive.e.pwm2", + create_unimplemented_device("riscv.sifive.e.pwm2", memmap[SIFIVE_E_PWM2].base, memmap[SIFIVE_E_PWM2].size); /* Flash memory */ -- 2.7.4
© 2016 - 2024 Red Hat, Inc.