aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm
diff options
context:
space:
mode:
authorYang Zhang <yang.z.zhang@Intel.com>2013-08-22 10:50:13 +0200
committerJan Beulich <jbeulich@suse.com>2013-08-22 10:50:13 +0200
commitb35d0a26983843c092bfa353fd6b9aa8c3bf4886 (patch)
tree24a69d20c4f69e5b60621ec201e8152d47ccc0e9 /xen/arch/x86/hvm
parent7fb5c6b9ef22915e3fcac95cd44857f4457ba783 (diff)
downloadxen-b35d0a26983843c092bfa353fd6b9aa8c3bf4886.tar.gz
xen-b35d0a26983843c092bfa353fd6b9aa8c3bf4886.tar.bz2
xen-b35d0a26983843c092bfa353fd6b9aa8c3bf4886.zip
Nested VMX: Force check ISR when L2 is running
External interrupt is allowed to notify CPU only when it has higher priority than current in servicing interrupt. With APIC-v, the priority comparing is done by hardware and hardware will inject the interrupt to VCPU when it recognizes an interrupt. Currently, there is no virtual APIC-v feature available for L1 to use, so when L2 is running, we still need to compare interrupt priority with ISR in hypervisor instead via hardware. Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com> Acked-by: "Dong, Eddie" <eddie.dong@intel.com>
Diffstat (limited to 'xen/arch/x86/hvm')
-rw-r--r--xen/arch/x86/hvm/vlapic.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 7a154f9ac2..f1530fdedb 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -37,6 +37,7 @@
#include <asm/hvm/io.h>
#include <asm/hvm/support.h>
#include <asm/hvm/vmx/vmx.h>
+#include <asm/hvm/nestedhvm.h>
#include <public/hvm/ioreq.h>
#include <public/hvm/params.h>
@@ -1037,7 +1038,8 @@ int vlapic_has_pending_irq(struct vcpu *v)
if ( irr == -1 )
return -1;
- if ( vlapic_virtual_intr_delivery_enabled() )
+ if ( vlapic_virtual_intr_delivery_enabled() &&
+ !nestedhvm_vcpu_in_guestmode(v) )
return irr;
isr = vlapic_find_highest_isr(vlapic);