* [PATCH] KVM: vmx: expose more information for KVM_INTERNAL_ERROR_DELIVERY_EV exits
@ 2017-07-05 10:38 Paolo Bonzini
2017-07-05 12:25 ` David Hildenbrand
0 siblings, 1 reply; 3+ messages in thread
From: Paolo Bonzini @ 2017-07-05 10:38 UTC (permalink / raw)
To: linux-kernel, kvm
This exit ended up being reported, but the currently exposed data does not provide
much of a starting point for debugging. In the reported case, the vmexit was
an EPT misconfiguration (MMIO access). Let userspace report ethe exit qualification
and, if relevant, the GPA.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/vmx.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 6dcc4873e435..4be80c3ac24d 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -8408,9 +8408,15 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
exit_reason != EXIT_REASON_TASK_SWITCH)) {
vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;
- vcpu->run->internal.ndata = 2;
+ vcpu->run->internal.ndata = 3;
vcpu->run->internal.data[0] = vectoring_info;
vcpu->run->internal.data[1] = exit_reason;
+ vcpu->run->internal.data[2] = vcpu->arch.exit_qualification;
+ if (exit_reason == EXIT_REASON_EPT_MISCONFIG) {
+ vcpu->run->internal.ndata++;
+ vcpu->run->internal.data[3] =
+ vmcs_read64(GUEST_PHYSICAL_ADDRESS);
+ }
return 0;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: vmx: expose more information for KVM_INTERNAL_ERROR_DELIVERY_EV exits
2017-07-05 10:38 [PATCH] KVM: vmx: expose more information for KVM_INTERNAL_ERROR_DELIVERY_EV exits Paolo Bonzini
@ 2017-07-05 12:25 ` David Hildenbrand
2017-07-05 12:26 ` Paolo Bonzini
0 siblings, 1 reply; 3+ messages in thread
From: David Hildenbrand @ 2017-07-05 12:25 UTC (permalink / raw)
To: Paolo Bonzini, linux-kernel, kvm
On 05.07.2017 12:38, Paolo Bonzini wrote:
> This exit ended up being reported, but the currently exposed data does not provide
> much of a starting point for debugging. In the reported case, the vmexit was
> an EPT misconfiguration (MMIO access). Let userspace report ethe exit qualification
> and, if relevant, the GPA.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> arch/x86/kvm/vmx.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 6dcc4873e435..4be80c3ac24d 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -8408,9 +8408,15 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
> exit_reason != EXIT_REASON_TASK_SWITCH)) {
> vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
> vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;
> - vcpu->run->internal.ndata = 2;
> + vcpu->run->internal.ndata = 3;
> vcpu->run->internal.data[0] = vectoring_info;
> vcpu->run->internal.data[1] = exit_reason;
> + vcpu->run->internal.data[2] = vcpu->arch.exit_qualification;
> + if (exit_reason == EXIT_REASON_EPT_MISCONFIG) {
> + vcpu->run->internal.ndata++;
> + vcpu->run->internal.data[3] =
> + vmcs_read64(GUEST_PHYSICAL_ADDRESS);
vcpu->run->internal.data[vcpu->run->internal.ndata++] = ...
So we don't have to name the position explicitly.
Whatever you prefer.
Reviewed-by: David Hildenbrand <david@redhat.com>
> + }
> return 0;
> }
>
>
--
Thanks,
David
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: vmx: expose more information for KVM_INTERNAL_ERROR_DELIVERY_EV exits
2017-07-05 12:25 ` David Hildenbrand
@ 2017-07-05 12:26 ` Paolo Bonzini
0 siblings, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2017-07-05 12:26 UTC (permalink / raw)
To: David Hildenbrand, linux-kernel, kvm
On 05/07/2017 14:25, David Hildenbrand wrote:
>> vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV;
>> - vcpu->run->internal.ndata = 2;
>> + vcpu->run->internal.ndata = 3;
>> vcpu->run->internal.data[0] = vectoring_info;
>> vcpu->run->internal.data[1] = exit_reason;
>> + vcpu->run->internal.data[2] = vcpu->arch.exit_qualification;
>> + if (exit_reason == EXIT_REASON_EPT_MISCONFIG) {
>> + vcpu->run->internal.ndata++;
>> + vcpu->run->internal.data[3] =
>> + vmcs_read64(GUEST_PHYSICAL_ADDRESS);
> vcpu->run->internal.data[vcpu->run->internal.ndata++] = ...
I considered that, but it's very long and the initializations above use
numbers. Considering that this is not going to change very often, I
ended up with the hard coded 3.
Paolo
> So we don't have to name the position explicitly.
>
> Whatever you prefer.
>
> Reviewed-by: David Hildenbrand <david@redhat.com>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-07-05 12:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-05 10:38 [PATCH] KVM: vmx: expose more information for KVM_INTERNAL_ERROR_DELIVERY_EV exits Paolo Bonzini
2017-07-05 12:25 ` David Hildenbrand
2017-07-05 12:26 ` Paolo Bonzini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.