platform: Remove qemu/virt directory
authorAnup Patel <anup.patel@wdc.com>
Fri, 1 May 2020 06:36:56 +0000 (12:06 +0530)
committerAnup Patel <anup@brainfault.org>
Mon, 4 May 2020 04:39:23 +0000 (10:09 +0530)
The OpenSBI generic platform works perfectly fine on the QEMU virt
machine so let's remove dedicated QEMU virt machine platform from
OpenSBI.

All QEMU virt machine related documentation in OpenSBI will now
suggest using OpenSBI generic platform.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
README.md
docs/platform/generic.md
docs/platform/qemu_virt.md
platform/qemu/virt/config.mk [deleted file]
platform/qemu/virt/objects.mk [deleted file]
platform/qemu/virt/platform.c [deleted file]
scripts/create-binary-archive.sh

index d58bc4e..2395012 100644 (file)
--- a/README.md
+++ b/README.md
@@ -115,7 +115,7 @@ line, the platform-specific static library *libplatsbi.a* and firmware examples
 are built for the platform *<platform_subdir>* present in the directory
 *platform* in the OpenSBI top directory. For example, to compile the platform
 library and the firmware examples for the QEMU RISC-V *virt* machine,
-*<platform_subdir>* should be *qemu/virt*.
+*<platform_subdir>* should be *generic*.
 
 To build *libsbi.a*, *libplatsbi.a* and the firmware for one of the supported
 platforms, run:
index 73b6fca..f4281a2 100644 (file)
@@ -39,4 +39,6 @@ The *Generic* platform does not have any platform-specific options.
 RISC-V Platforms Using Generic Platform
 ---------------------------------------
 
-To be added later.
+* **QEMU RISC-V Virt Machine** (*[qemu_virt.md]*)
+
+[qemu_virt.md]: qemu_virt.md
index 6d8a3d0..2196e5a 100644 (file)
@@ -7,7 +7,7 @@ software development and testing. It is also referred to as
 storage, and other types of IO.
 
 To build the platform-specific library and firmware images, provide the
-*PLATFORM=qemu/virt* parameter to the top level `make` command.
+*PLATFORM=generic* parameter to the top level `make` command.
 
 Platform Options
 ----------------
@@ -22,13 +22,13 @@ Execution on QEMU RISC-V 64-bit
 
 Build:
 ```
-make PLATFORM=qemu/virt
+make PLATFORM=generic
 ```
 
 Run:
 ```
 qemu-system-riscv64 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf
+       -kernel build/platform/generic/firmware/fw_payload.bin
 ```
 
 **U-Boot Payload**
@@ -38,19 +38,19 @@ the `qemu-riscv64_smode_defconfig` configuration.
 
 Build:
 ```
-make PLATFORM=qemu/virt FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
+make PLATFORM=generic FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
 ```
 
 Run:
 ```
 qemu-system-riscv64 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf
+       -kernel build/platform/generic/firmware/fw_payload.elf
 ```
 or
 ```
 qemu-system-riscv64 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_jump.elf \
-       -device loader,file=<uboot_build_directory>/u-boot.bin,addr=0x80200000
+       -bios build/platform/generic/firmware/fw_jump.bin \
+       -kernel <uboot_build_directory>/u-boot.bin
 ```
 
 **Linux Kernel Payload**
@@ -60,13 +60,13 @@ Note: We assume that the Linux kernel is compiled using
 
 Build:
 ```
-make PLATFORM=qemu/virt FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
+make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 ```
 
 Run:
 ```
 qemu-system-riscv64 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf \
+       -kernel build/platform/generic/firmware/fw_payload.elf \
        -drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
        -device virtio-blk-device,drive=hd0 \
        -append "root=/dev/vda rw console=ttyS0"
@@ -74,8 +74,8 @@ qemu-system-riscv64 -M virt -m 256M -nographic \
 or
 ```
 qemu-system-riscv64 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_jump.elf \
-       -device loader,file=<linux_build_directory>/arch/riscv/boot/Image,addr=0x80200000 \
+       -bios build/platform/generic/firmware/fw_jump.bin \
+       -kernel <linux_build_directory>/arch/riscv/boot/Image \
        -drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
        -device virtio-blk-device,drive=hd0 \
        -append "root=/dev/vda rw console=ttyS0"
@@ -89,13 +89,13 @@ Execution on QEMU RISC-V 32-bit
 
 Build:
 ```
-make PLATFORM=qemu/virt
+make PLATFORM=generic PLATFORM_RISCV_XLEN=32
 ```
 
 Run:
 ```
 qemu-system-riscv32 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf
+       -kernel build/platform/generic/firmware/fw_payload.bin
 ```
 
 **U-Boot Payload**
@@ -105,37 +105,35 @@ the `qemu-riscv32_smode_defconfig` configuration.
 
 Build:
 ```
-make PLATFORM=qemu/virt FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
+make PLATFORM=generic PLATFORM_RISCV_XLEN=32 FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
 ```
 
 Run:
 ```
 qemu-system-riscv32 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf
+       -kernel build/platform/generic/firmware/fw_payload.elf
 ```
 or
 ```
 qemu-system-riscv32 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_jump.elf \
-       -device loader,file=<uboot_build_directory>/u-boot.bin,addr=0x80400000
+       -bios build/platform/generic/firmware/fw_jump.bin \
+       -kernel <uboot_build_directory>/u-boot.bin
 ```
 
 **Linux Kernel Payload**
 
 Note: We assume that the Linux kernel is compiled using
-*arch/riscv/configs/rv32_defconfig* (kernel 5.1 and newer)
-respectively using *arch/riscv/configs/defconfig* plus setting
-CONFIG_ARCH_RV32I=y (kernel 5.0 and older).
+*arch/riscv/configs/rv32_defconfig*.
 
 Build:
 ```
-make PLATFORM=qemu/virt FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
+make PLATFORM=generic PLATFORM_RISCV_XLEN=32 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 ```
 
 Run:
 ```
 qemu-system-riscv32 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_payload.elf \
+       -kernel build/platform/generic/firmware/fw_payload.elf \
        -drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
        -device virtio-blk-device,drive=hd0 \
        -append "root=/dev/vda rw console=ttyS0"
@@ -143,8 +141,8 @@ qemu-system-riscv32 -M virt -m 256M -nographic \
 or
 ```
 qemu-system-riscv32 -M virt -m 256M -nographic \
-       -kernel build/platform/qemu/virt/firmware/fw_jump.elf \
-       -device loader,file=<linux_build_directory>/arch/riscv/boot/Image,addr=0x80400000 \
+       -bios build/platform/generic/firmware/fw_jump.bin \
+       -kernel <linux_build_directory>/arch/riscv/boot/Image \
        -drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
        -device virtio-blk-device,drive=hd0 \
        -append "root=/dev/vda rw console=ttyS0"
diff --git a/platform/qemu/virt/config.mk b/platform/qemu/virt/config.mk
deleted file mode 100644 (file)
index 025cd61..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# SPDX-License-Identifier: BSD-2-Clause
-#
-# Copyright (c) 2019 Western Digital Corporation or its affiliates.
-#
-# Authors:
-#   Anup Patel <anup.patel@wdc.com>
-#
-
-# Compiler flags
-platform-cppflags-y =
-platform-cflags-y =
-platform-asflags-y =
-platform-ldflags-y =
-
-# Command for platform specific "make run"
-platform-runcmd = qemu-system-riscv$(PLATFORM_RISCV_XLEN) -M virt -m 256M \
-  -nographic -kernel $(build_dir)/platform/qemu/virt/firmware/fw_payload.elf
-
-# Blobs to build
-FW_TEXT_START=0x80000000
-FW_DYNAMIC=y
-FW_JUMP=y
-ifeq ($(PLATFORM_RISCV_XLEN), 32)
-  # This needs to be 4MB aligned for 32-bit system
-  FW_JUMP_ADDR=0x80400000
-else
-  # This needs to be 2MB aligned for 64-bit system
-  FW_JUMP_ADDR=0x80200000
-endif
-FW_JUMP_FDT_ADDR=0x82200000
-FW_PAYLOAD=y
-ifeq ($(PLATFORM_RISCV_XLEN), 32)
-  # This needs to be 4MB aligned for 32-bit system
-  FW_PAYLOAD_OFFSET=0x400000
-else
-  # This needs to be 2MB aligned for 64-bit system
-  FW_PAYLOAD_OFFSET=0x200000
-endif
-FW_PAYLOAD_FDT_ADDR=0x82200000
diff --git a/platform/qemu/virt/objects.mk b/platform/qemu/virt/objects.mk
deleted file mode 100644 (file)
index c382cbf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# SPDX-License-Identifier: BSD-2-Clause
-#
-# Copyright (c) 2019 Western Digital Corporation or its affiliates.
-#
-# Authors:
-#   Anup Patel <anup.patel@wdc.com>
-#
-
-platform-objs-y += platform.o
diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c
deleted file mode 100644 (file)
index 7836bee..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2019 Western Digital Corporation or its affiliates.
- *
- * Authors:
- *   Anup Patel <anup.patel@wdc.com>
- *   Nick Kossifidis <mick@ics.forth.gr>
- */
-
-#include <sbi/riscv_asm.h>
-#include <sbi/riscv_encoding.h>
-#include <sbi/riscv_io.h>
-#include <sbi/sbi_const.h>
-#include <sbi/sbi_hart.h>
-#include <sbi/sbi_platform.h>
-#include <sbi_utils/fdt/fdt_fixup.h>
-#include <sbi_utils/irqchip/plic.h>
-#include <sbi_utils/serial/uart8250.h>
-#include <sbi_utils/sys/clint.h>
-#include <sbi_utils/sys/sifive_test.h>
-
-/* clang-format off */
-
-#define VIRT_HART_COUNT                        8
-
-#define VIRT_TEST_ADDR                 0x100000
-
-#define VIRT_CLINT_ADDR                        0x2000000
-
-#define VIRT_PLIC_ADDR                 0xc000000
-#define VIRT_PLIC_NUM_SOURCES          127
-#define VIRT_PLIC_NUM_PRIORITIES       7
-
-#define VIRT_UART16550_ADDR            0x10000000
-#define VIRT_UART_BAUDRATE             115200
-#define VIRT_UART_SHIFTREG_ADDR                1843200
-
-/* clang-format on */
-
-static int virt_early_init(bool cold_boot)
-{
-       if (!cold_boot)
-               return 0;
-
-       return sifive_test_init(VIRT_TEST_ADDR);
-}
-
-static int virt_final_init(bool cold_boot)
-{
-       void *fdt;
-
-       if (!cold_boot)
-               return 0;
-
-       fdt = sbi_scratch_thishart_arg1_ptr();
-       fdt_fixups(fdt);
-
-       return 0;
-}
-
-static int virt_console_init(void)
-{
-       return uart8250_init(VIRT_UART16550_ADDR, VIRT_UART_SHIFTREG_ADDR,
-                            VIRT_UART_BAUDRATE, 0, 1);
-}
-
-static int virt_irqchip_init(bool cold_boot)
-{
-       int rc;
-       u32 hartid = current_hartid();
-
-       if (cold_boot) {
-               rc = plic_cold_irqchip_init(
-                       VIRT_PLIC_ADDR, VIRT_PLIC_NUM_SOURCES, VIRT_HART_COUNT);
-               if (rc)
-                       return rc;
-       }
-
-       return plic_warm_irqchip_init(hartid, (2 * hartid), (2 * hartid + 1));
-}
-
-static int virt_ipi_init(bool cold_boot)
-{
-       int rc;
-
-       if (cold_boot) {
-               rc = clint_cold_ipi_init(VIRT_CLINT_ADDR, VIRT_HART_COUNT);
-               if (rc)
-                       return rc;
-       }
-
-       return clint_warm_ipi_init();
-}
-
-static int virt_timer_init(bool cold_boot)
-{
-       int rc;
-
-       if (cold_boot) {
-               rc = clint_cold_timer_init(VIRT_CLINT_ADDR,
-                                          VIRT_HART_COUNT, TRUE);
-               if (rc)
-                       return rc;
-       }
-
-       return clint_warm_timer_init();
-}
-
-const struct sbi_platform_operations platform_ops = {
-       .early_init             = virt_early_init,
-       .final_init             = virt_final_init,
-       .console_putc           = uart8250_putc,
-       .console_getc           = uart8250_getc,
-       .console_init           = virt_console_init,
-       .irqchip_init           = virt_irqchip_init,
-       .ipi_send               = clint_ipi_send,
-       .ipi_clear              = clint_ipi_clear,
-       .ipi_init               = virt_ipi_init,
-       .timer_value            = clint_timer_value,
-       .timer_event_stop       = clint_timer_event_stop,
-       .timer_event_start      = clint_timer_event_start,
-       .timer_init             = virt_timer_init,
-       .system_reset           = sifive_test_system_reset,
-};
-
-const struct sbi_platform platform = {
-       .opensbi_version        = OPENSBI_VERSION,
-       .platform_version       = SBI_PLATFORM_VERSION(0x0, 0x01),
-       .name                   = "QEMU Virt Machine",
-       .features               = SBI_PLATFORM_DEFAULT_FEATURES,
-       .hart_count             = VIRT_HART_COUNT,
-       .hart_stack_size        = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
-       .platform_ops_addr      = (unsigned long)&platform_ops
-};
index c2575ab..32e53cf 100755 (executable)
@@ -95,14 +95,12 @@ build_opensbi() {
        case "${BUILD_RISCV_XLEN}" in
        32)
                # Setup 32-bit platform list
-               BUILD_PLATFORM_SUBDIR=("qemu/virt")
-               BUILD_PLATFORM_SUBDIR+=("sifive/fu540")
+               BUILD_PLATFORM_SUBDIR=("sifive/fu540")
                BUILD_PLATFORM_SUBDIR+=("generic")
                ;;
        64)
                # Setup 64-bit platform list
-               BUILD_PLATFORM_SUBDIR=("qemu/virt")
-               BUILD_PLATFORM_SUBDIR+=("sifive/fu540")
+               BUILD_PLATFORM_SUBDIR=("sifive/fu540")
                BUILD_PLATFORM_SUBDIR+=("nuclei/ux600")
                BUILD_PLATFORM_SUBDIR+=("kendryte/k210")
                BUILD_PLATFORM_SUBDIR+=("fpga/ariane")