On Fri, Apr 10, 2020 at 9:16 PM Yifei Jiang <jiangyi...@huawei.com> wrote: > > Add target/riscv/kvm.c to place kvm_arch_* function needed by kvm/kvm-all.c. > Meanwhile, add kvm support in configure file. > > Signed-off-by: Yifei Jiang <jiangyi...@huawei.com> > Signed-off-by: Yipeng Yin <yinyipe...@huawei.com>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > configure | 1 + > target/riscv/Makefile.objs | 1 + > target/riscv/kvm.c | 128 +++++++++++++++++++++++++++++++++++++ > 3 files changed, 130 insertions(+) > create mode 100644 target/riscv/kvm.c > > diff --git a/configure b/configure > index 233c671aaa..7114a1c64d 100755 > --- a/configure > +++ b/configure > @@ -200,6 +200,7 @@ supported_kvm_target() { > x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ > mips:mips | mipsel:mips | \ > ppc:ppc | ppc64:ppc | ppc:ppc64 | ppc64:ppc64 | ppc64:ppc64le | \ > + riscv32:riscv32 | riscv64:riscv64 | \ > s390x:s390x) > return 0 > ;; > diff --git a/target/riscv/Makefile.objs b/target/riscv/Makefile.objs > index ff651f69f6..7ea8f4c3da 100644 > --- a/target/riscv/Makefile.objs > +++ b/target/riscv/Makefile.objs > @@ -1,5 +1,6 @@ > obj-y += translate.o op_helper.o cpu_helper.o cpu.o csr.o fpu_helper.o > gdbstub.o > obj-$(CONFIG_SOFTMMU) += pmp.o > +obj-$(CONFIG_KVM) += kvm.o > > ifeq ($(CONFIG_SOFTMMU),y) > obj-y += monitor.o > diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c > new file mode 100644 > index 0000000000..8c386d9acf > --- /dev/null > +++ b/target/riscv/kvm.c > @@ -0,0 +1,128 @@ > +/* > + * RISC-V implementation of KVM hooks > + * > + * Copyright (c) 2020 Huawei Technologies Co., Ltd > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms and conditions of the GNU General Public License, > + * version 2 or later, as published by the Free Software Foundation. > + * > + * This program is distributed in the hope it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for > + * more details. > + * > + * You should have received a copy of the GNU General Public License along > with > + * this program. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +#include "qemu/osdep.h" > +#include <sys/ioctl.h> > + > +#include <linux/kvm.h> > + > +#include "qemu-common.h" > +#include "qemu/timer.h" > +#include "qemu/error-report.h" > +#include "qemu/main-loop.h" > +#include "sysemu/sysemu.h" > +#include "sysemu/kvm.h" > +#include "sysemu/kvm_int.h" > +#include "cpu.h" > +#include "trace.h" > +#include "hw/pci/pci.h" > +#include "exec/memattrs.h" > +#include "exec/address-spaces.h" > +#include "hw/boards.h" > +#include "hw/irq.h" > +#include "qemu/log.h" > +#include "hw/loader.h" > + > +const KVMCapabilityInfo kvm_arch_required_capabilities[] = { > + KVM_CAP_LAST_INFO > +}; > + > +int kvm_arch_get_registers(CPUState *cs) > +{ > + return 0; > +} > + > +int kvm_arch_put_registers(CPUState *cs, int level) > +{ > + return 0; > +} > + > +int kvm_arch_release_virq_post(int virq) > +{ > + return 0; > +} > + > +int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, > + uint64_t address, uint32_t data, PCIDevice *dev) > +{ > + return 0; > +} > + > +int kvm_arch_destroy_vcpu(CPUState *cs) > +{ > + return 0; > +} > + > +unsigned long kvm_arch_vcpu_id(CPUState *cpu) > +{ > + return cpu->cpu_index; > +} > + > +void kvm_arch_init_irq_routing(KVMState *s) > +{ > +} > + > +int kvm_arch_init_vcpu(CPUState *cs) > +{ > + return 0; > +} > + > +int kvm_arch_msi_data_to_gsi(uint32_t data) > +{ > + abort(); > +} > + > +int kvm_arch_add_msi_route_post(struct kvm_irq_routing_entry *route, > + int vector, PCIDevice *dev) > +{ > + return 0; > +} > + > +int kvm_arch_init(MachineState *ms, KVMState *s) > +{ > + return 0; > +} > + > +int kvm_arch_irqchip_create(KVMState *s) > +{ > + return 0; > +} > + > +int kvm_arch_process_async_events(CPUState *cs) > +{ > + return 0; > +} > + > +void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run) > +{ > +} > + > +MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run) > +{ > + return MEMTXATTRS_UNSPECIFIED; > +} > + > +bool kvm_arch_stop_on_emulation_error(CPUState *cs) > +{ > + return true; > +} > + > +int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run) > +{ > + return 0; > +} > -- > 2.19.1 > > >