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 mainline/alistair/riscv-hyp-ext-v0.5.1 branch at: https://github.com/kvm-riscv/qemu.git 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.5-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 | 18 +- arm/aarch32/include/asm/kvm.h | 7 +- arm/aarch64/include/asm/kvm.h | 9 +- include/linux/kvm.h | 25 ++ powerpc/include/asm/kvm.h | 3 + riscv/fdt.c | 195 ++++++++++ riscv/include/asm/kvm.h | 127 +++++++ 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 | 11 + riscv/irq.c | 13 + riscv/kvm-cpu.c | 404 ++++++++++++++++++++ riscv/kvm.c | 174 +++++++++ riscv/pci.c | 109 ++++++ riscv/plic.c | 558 ++++++++++++++++++++++++++++ util/update_headers.sh | 2 +- 21 files changed, 1874 insertions(+), 9 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.17.1