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@xxxxxxxxxx> --- 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 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm