From ef2bb2bc6e37f87f3af4f9d9c8b69f76408620a7 Mon Sep 17 00:00:00 2001 From: LekKit <50500857+LekKit@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:27:16 +0300 Subject: [PATCH] Patch to support NVMe and RVVM board in U-Boot - Enables NVMe PCI support & booting from it - Enables framebuffer driver, passes it as EFI FB - Enables Realtek RTL8169 driver - Get rid of DHCP boot, it is confusing and not helpful Applies cleanly over U-Boot 2023.4 Reuses QEMU virt board config, build like this: make qemu-riscv64_smode_defconfig CROSS_COMPILE=riscv64-linux-gnu- make Resulting firmware works fine on both RVVM and QEMU --- uboot/uboot_rvvm_support.patch | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 uboot/uboot_rvvm_support.patch diff --git a/uboot/uboot_rvvm_support.patch b/uboot/uboot_rvvm_support.patch new file mode 100644 index 0000000..1e62a2d --- /dev/null +++ b/uboot/uboot_rvvm_support.patch @@ -0,0 +1,67 @@ +Patch to support NVMe and RVVM board properly in U-Boot + - Enables NVMe PCI support & booting from it + - Enables framebuffer driver, passes it as EFI FB + - Enables Realtek RTL8169 driver + - Get rid of DHCP boot, it is confusing and not helpful + +Applies cleanly over U-Boot 2023.4 +Reuses QEMU virt board config, build like this: + make qemu-riscv64_smode_defconfig + CROSS_COMPILE=riscv64-linux-gnu- make + +Resulting firmware works fine on both RVVM and QEMU + +diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig +index 48ca4ff4..faa17f33 100644 +--- a/arch/riscv/Kconfig ++++ b/arch/riscv/Kconfig +@@ -15,7 +15,7 @@ config TARGET_MICROCHIP_ICICLE + bool "Support Microchip PolarFire-SoC Icicle Board" + + config TARGET_QEMU_VIRT +- bool "Support QEMU Virt Board" ++ bool "Support QEMU/RVVM Virt Boards" + + config TARGET_SIFIVE_UNLEASHED + bool "Support SiFive Unleashed Board" +diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig +index 6114e1b8..7c25825a 100644 +--- a/board/emulation/qemu-riscv/Kconfig ++++ b/board/emulation/qemu-riscv/Kconfig +@@ -29,6 +29,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y + select GENERIC_RISCV + select SUPPORT_SPL ++ imply OPTIMIZE_INLINING + imply AHCI + imply SMP + imply BOARD_LATE_INIT +@@ -50,7 +51,12 @@ config BOARD_SPECIFIC_OPTIONS # dummy + imply SCSI_AHCI + imply AHCI_PCI + imply E1000 ++ imply RTL8169 + imply NVME ++ imply NVME_PCI ++ imply VIDEO ++ imply VIDEO_SIMPLE ++ imply NO_FB_CLEAR + imply PCI + imply PCIE_ECAM_GENERIC + imply SCSI +diff --git a/include/configs/qemu-riscv.h b/include/configs/qemu-riscv.h +index 20135f56..821251a3 100644 +--- a/include/configs/qemu-riscv.h ++++ b/include/configs/qemu-riscv.h +@@ -19,9 +19,9 @@ + + #define BOOT_TARGET_DEVICES(func) \ + func(QEMU, qemu, na) \ ++ func(NVME, nvme, 0) \ + func(VIRTIO, virtio, 0) \ +- func(SCSI, scsi, 0) \ +- func(DHCP, dhcp, na) ++ func(SCSI, scsi, 0) + + #include +