Am 22.09.2009 um 18:39 schrieb Joerg Roedel <joro@xxxxxxxxxx>:
On Fri, Sep 18, 2009 at 03:00:30PM +0200, Alexander Graf wrote:
Real hardware would first process the event_inj field and then
notify the
host that an interrupt is waiting.
Does it really? I couldn't find this in the SVM spec.
I didn't see it in the spec either, but that's what I saw real
hardware do which is supported by the exit_info validity check in svm.c
Let's do the same and just not EXIT_INTR if we have an event
pending for the
L2 guest.
Anyway. I think this case is handled good enough with patch 5/5. This
patch, to be complete must also enable single-steping to exit again
after the first instruction of the exception handler has ran to inject
the interrupt. But that would make the whole thing rather compĺicate
d.
The NMI injection path has logic for that, but for now it shouldn't
hurt - we'll get an interrupt sooner or later.
Signed-off-by: Alexander Graf <agraf@xxxxxxx>
---
arch/x86/kvm/svm.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 61efd13..28fcbd0 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1401,6 +1401,10 @@ static inline int nested_svm_intr(struct
vcpu_svm *svm)
if (!(svm->vcpu.arch.hflags & HF_HIF_MASK))
return 0;
+ /* We can't EXIT_INTR when we still have an event to inject */
+ if (svm->vmcb->control.event_inj)
+ return 1;
+
svm->vmcb->control.exit_code = SVM_EXIT_INTR;
if (nested_svm_exit_handled(svm)) {
--
1.6.0.2
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html