From 7fb5c6b9ef22915e3fcac95cd44857f4457ba783 Mon Sep 17 00:00:00 2001 From: Yang Zhang Date: Thu, 22 Aug 2013 10:49:24 +0200 Subject: [PATCH] Nested VMX: Check whether interrupt is blocked by TPR If interrupt is blocked by L1's TPR, L2 should not see it and keep running. Adding the check before L2 to retrive interrupt. Signed-off-by: Yang Zhang Acked-by: "Dong, Eddie" --- xen/arch/x86/hvm/vmx/intr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index e376f3c4ee..cab91094f4 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -165,6 +165,11 @@ static int nvmx_intr_intercept(struct vcpu *v, struct hvm_intack intack) { u32 ctrl; + /* If blocked by L1's tpr, then nothing to do. */ + if ( nestedhvm_vcpu_in_guestmode(v) && + hvm_interrupt_blocked(v, intack) == hvm_intblk_tpr ) + return 1; + if ( nvmx_intr_blocked(v) != hvm_intblk_none ) { enable_intr_window(v, intack); -- 2.30.2