Re: [PATCH v4 3/6] KVM: selftests: Introduce UCALL_UNHANDLED for unhandled vector reporting
From: Ricardo Koller <hidden>
Date: 2021-07-30 01:11:02
Also in:
kvmarm
On Thu, Jul 29, 2021 at 06:15:27PM +0000, Sean Christopherson wrote:
On Thu, Jun 10, 2021, Ricardo Koller wrote:quoted
diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h index fcd8e3855111..beb76d6deaa9 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h@@ -349,6 +349,7 @@ enum { UCALL_SYNC, UCALL_ABORT, UCALL_DONE, + UCALL_UNHANDLED, };...quoted
@@ -1254,16 +1254,13 @@ void vm_install_exception_handler(struct kvm_vm *vm, int vector, void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) { - if (vcpu_state(vm, vcpuid)->exit_reason == KVM_EXIT_IO - && vcpu_state(vm, vcpuid)->io.port == UNEXPECTED_VECTOR_PORT - && vcpu_state(vm, vcpuid)->io.size == 4) { - /* Grab pointer to io data */ - uint32_t *data = (void *)vcpu_state(vm, vcpuid) - + vcpu_state(vm, vcpuid)->io.data_offset; - - TEST_ASSERT(false, - "Unexpected vectored event in guest (vector:0x%x)", - *data); + struct ucall uc; + + if (get_ucall(vm, vcpuid, &uc) == UCALL_UNHANDLED) {UCALL_UNHANDLED is a bit of an odd name. Without the surrounding context, I would have no idea that it's referring to an unhandled event, e.g. my gut reaction would be that it means the ucall itself was unhandled. Maybe UCALL_UNHANDLED_EVENT?
I see. I can send a new patch (this was commited as 75275d7fbe) with a new name. The only name I can think of that's more descriptive would be UCALL_UNHANDLED_EXCEPTION, but that's even longer.
It's rather long, but I don't think that will be problematic for any of the code.quoted
+ uint64_t vector = uc.args[0]; + + TEST_FAIL("Unexpected vectored event in guest (vector:0x%lx)", + vector); } } -- 2.32.0.272.g935e593368-goog