summaryrefslogtreecommitdiff
path: root/arch/riscv/include/asm/kvm_vcpu_insn.h
diff options
context:
space:
mode:
authorAnup Patel <apatel@ventanamicro.com>2022-07-29 14:44:46 +0300
committerAnup Patel <anup@brainfault.org>2022-07-29 14:44:46 +0300
commit1222b55cee2396a1a286e924d9f6abb6d7a04f55 (patch)
treef8999780897455dcc0eb649ac6b1d2355b73a6de /arch/riscv/include/asm/kvm_vcpu_insn.h
parentb91f0e4cb8a3ce4f2716a13739ade0f7bea8eadb (diff)
downloadlinux-1222b55cee2396a1a286e924d9f6abb6d7a04f55.tar.xz
RISC-V: KVM: Add extensible system instruction emulation framework
We will be emulating more system instructions in near future with upcoming AIA, PMU, Nested and other virtualization features. To accommodate above, we add an extensible system instruction emulation framework in vcpu_insn.c. Signed-off-by: Anup Patel <apatel@ventanamicro.com> Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'arch/riscv/include/asm/kvm_vcpu_insn.h')
-rw-r--r--arch/riscv/include/asm/kvm_vcpu_insn.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/riscv/include/asm/kvm_vcpu_insn.h b/arch/riscv/include/asm/kvm_vcpu_insn.h
index 4e3ba4e84d0f..3351eb61a251 100644
--- a/arch/riscv/include/asm/kvm_vcpu_insn.h
+++ b/arch/riscv/include/asm/kvm_vcpu_insn.h
@@ -18,6 +18,15 @@ struct kvm_mmio_decode {
int return_handled;
};
+/* Return values used by function emulating a particular instruction */
+enum kvm_insn_return {
+ KVM_INSN_EXIT_TO_USER_SPACE = 0,
+ KVM_INSN_CONTINUE_NEXT_SEPC,
+ KVM_INSN_CONTINUE_SAME_SEPC,
+ KVM_INSN_ILLEGAL_TRAP,
+ KVM_INSN_VIRTUAL_TRAP
+};
+
void kvm_riscv_vcpu_wfi(struct kvm_vcpu *vcpu);
int kvm_riscv_vcpu_virtual_insn(struct kvm_vcpu *vcpu, struct kvm_run *run,
struct kvm_cpu_trap *trap);