27 lines
884 B
Diff
27 lines
884 B
Diff
|
# Commit 7fb5c6b9ef22915e3fcac95cd44857f4457ba783
|
||
|
# Date 2013-08-22 10:49:24 +0200
|
||
|
# Author Yang Zhang <yang.z.zhang@Intel.com>
|
||
|
# Committer Jan Beulich <jbeulich@suse.com>
|
||
|
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 <yang.z.zhang@Intel.com>
|
||
|
Acked-by: "Dong, Eddie" <eddie.dong@intel.com>
|
||
|
|
||
|
--- 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 vc
|
||
|
{
|
||
|
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);
|