[RFC PATCH kvmtool 2/5] Allow architectures to hook KVM_EXIT_SYSTEM_EVENT
Oliver Upton
oupton at google.com
Fri Mar 11 09:57:14 PST 2022
Certain system events require architecture-specific handling. Allow
architectures to intervene for exits unhandled by the default exit
handler.
Signed-off-by: Oliver Upton <oupton at google.com>
---
include/kvm/kvm-cpu.h | 1 +
kvm-cpu.c | 8 ++++++++
2 files changed, 9 insertions(+)
diff --git a/include/kvm/kvm-cpu.h b/include/kvm/kvm-cpu.h
index 0f16f8d..75e42d8 100644
--- a/include/kvm/kvm-cpu.h
+++ b/include/kvm/kvm-cpu.h
@@ -20,6 +20,7 @@ void kvm_cpu__run(struct kvm_cpu *vcpu);
int kvm_cpu__start(struct kvm_cpu *cpu);
bool kvm_cpu__handle_exit(struct kvm_cpu *vcpu);
int kvm_cpu__get_endianness(struct kvm_cpu *vcpu);
+bool kvm_cpu__arch_handle_system_event(struct kvm_cpu *vcpu);
int kvm_cpu__get_debug_fd(void);
void kvm_cpu__set_debug_fd(int fd);
diff --git a/kvm-cpu.c b/kvm-cpu.c
index 7dec088..d615c37 100644
--- a/kvm-cpu.c
+++ b/kvm-cpu.c
@@ -23,6 +23,11 @@ int __attribute__((weak)) kvm_cpu__get_endianness(struct kvm_cpu *vcpu)
return VIRTIO_ENDIAN_HOST;
}
+bool __attribute__((weak)) kvm_cpu__arch_handle_system_event(struct kvm_cpu *vcpu)
+{
+ return false;
+}
+
void kvm_cpu__enable_singlestep(struct kvm_cpu *vcpu)
{
struct kvm_guest_debug debug = {
@@ -224,6 +229,9 @@ int kvm_cpu__start(struct kvm_cpu *cpu)
*/
switch (cpu->kvm_run->system_event.type) {
default:
+ if (kvm_cpu__arch_handle_system_event(cpu))
+ break;
+
pr_warning("unknown system event type %d",
cpu->kvm_run->system_event.type);
/* fall through for now */
--
2.35.1.723.g4982287a31-goog
More information about the linux-arm-kernel
mailing list