nestedsvm: fix interrupt handling
PATCH 1/1 nestedsvm: fix interrupt handling
Give the l2 guest a chance to finish the delivery of the last injected interrupt or exception before we emulate a VMEXIT.
For example after a NPF handled by the host there can be an interrupt for the l1 guest.
Signed-off-by Christoph Egger <[email protected]>
Signature · 6 lines
---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632
xen/arch/x86/hvm/svm/nestedsvm.c +10 -0
@@ -1164,6 +1164,8 @@ enum hvm_intblk nsvm_intr_blocked(structreturn hvm_intblk_svm_gif;if (nestedhvm_vcpu_in_guestmode (v) ) { +struct vmcb_struct *n2vmcb = nv->nv_n2vmcx; +if ( svm->ns_hostflags.fields.vintrmask )if ( !svm->ns_hostflags.fields.rflagsif )return hvm_intblk_rflags_ie;
@@ -1176,6 +1178,14 @@ enum hvm_intblk nsvm_intr_blocked(struct*/ if ( v->arch.hvm_vcpu.hvm_io.io_state != HVMIO_none )return hvm_intblk_shadow; + +if ( !nv->nv_vmexit_pending && n2vmcb->exitintinfo.bytes !=0 ) { +/* Give the l2 guest a chance to finish the delivery of +* the last injected interrupt or exception before we +* emulate a VMEXIT (e.g. VMEXIT(INTR) ). +*/ +return hvm_intblk_shadow; + } }if ( nv->nv_vmexit_pending ) {
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xen.org/xen-devel