This series adds RISC-V support for KVMTOOL and it is based on the v10 of KVM RISC-V series. The KVM RISC-V patches are not yet merged in Linux kernel but it will be good to get early review for KVMTOOL RISC-V support. The KVMTOOL RISC-V patches can be found in riscv_master branch at: https//github.com/kvm-riscv/kvmtool.git The KVM RISC-V patches can be found in riscv_kvm_master branch at: https//github.com/kvm-riscv/linux.git The QEMU RISC-V hypervisor emulation is done by Alistair and is available in master branch at: https://git.qemu.org/git/qemu.git Changes since v5: - Sync-up headers with latest KVM RISC-V v16 series which is based on Linux-5.11-rc3 Changes since v4: - Rebased on recent commit 90b2d3adadf218dfc6bdfdfcefe269843360223c - Sync-up headers with latest KVM RISC-V v15 series which is based on Linux-5.10-rc3 Changes since v3: - Rebased on recent commit 351d931f496aeb2e97b8daa44c943d8b59351d07 - Improved kvm_cpu__show_registers() implementation Changes since v2: - Support compiling KVMTOOL for both RV32 and RV64 systems using a multilib toolchain - Fix kvm_cpu__arch_init() for RV32 system Changes since v1: - Use linux/sizes.h in kvm/kvm-arch.h - Added comment in kvm/kvm-arch.h about why PCI config space is 256M - Remove forward declaration of "struct kvm" from kvm/kvm-cpu-arch.h - Fixed placement of DTB and INITRD in guest RAM - Use __riscv_xlen instead of sizeof(unsigned long) in __kvm_reg_id() Anup Patel (8): update_headers: Sync-up ABI headers with Linux-5.11-rc3 riscv: Initial skeletal support riscv: Implement Guest/VM arch functions riscv: Implement Guest/VM VCPU arch functions riscv: Add PLIC device emulation riscv: Generate FDT at runtime for Guest/VM riscv: Handle SBI calls forwarded to user space riscv: Generate PCI host DT node INSTALL | 7 +- Makefile | 24 +- arm/aarch64/include/asm/kvm.h | 45 ++- include/linux/kvm.h | 182 ++++++++- powerpc/include/asm/kvm.h | 8 + riscv/fdt.c | 195 ++++++++++ riscv/include/asm/kvm.h | 128 +++++++ riscv/include/kvm/barrier.h | 14 + riscv/include/kvm/fdt-arch.h | 8 + riscv/include/kvm/kvm-arch.h | 85 +++++ riscv/include/kvm/kvm-config-arch.h | 15 + riscv/include/kvm/kvm-cpu-arch.h | 51 +++ riscv/include/kvm/sbi.h | 48 +++ riscv/ioport.c | 12 + riscv/irq.c | 13 + riscv/kvm-cpu.c | 490 ++++++++++++++++++++++++ riscv/kvm.c | 174 +++++++++ riscv/pci.c | 109 ++++++ riscv/plic.c | 563 ++++++++++++++++++++++++++++ util/update_headers.sh | 2 +- x86/include/asm/kvm.h | 43 ++- 21 files changed, 2198 insertions(+), 18 deletions(-) create mode 100644 riscv/fdt.c create mode 100644 riscv/include/asm/kvm.h create mode 100644 riscv/include/kvm/barrier.h create mode 100644 riscv/include/kvm/fdt-arch.h create mode 100644 riscv/include/kvm/kvm-arch.h create mode 100644 riscv/include/kvm/kvm-config-arch.h create mode 100644 riscv/include/kvm/kvm-cpu-arch.h create mode 100644 riscv/include/kvm/sbi.h create mode 100644 riscv/ioport.c create mode 100644 riscv/irq.c create mode 100644 riscv/kvm-cpu.c create mode 100644 riscv/kvm.c create mode 100644 riscv/pci.c create mode 100644 riscv/plic.c -- 2.25.1