if ( nestedhvm_vcpu_in_guestmode(v) )
{
+ ctrl = get_vvmcs(v, PIN_BASED_VM_EXEC_CONTROL);
+ if ( !(ctrl & PIN_BASED_EXT_INTR_MASK) )
+ return 0;
+
if ( intack.source == hvm_intsrc_pic ||
intack.source == hvm_intsrc_lapic )
{
- ctrl = get_vvmcs(v, PIN_BASED_VM_EXEC_CONTROL);
- if ( !(ctrl & PIN_BASED_EXT_INTR_MASK) )
- return 0;
-
vmx_inject_extint(intack.vector, intack.source);
ctrl = get_vvmcs(v, VM_EXIT_CONTROLS);
return 1;
}
+ else if ( intack.source == hvm_intsrc_vector )
+ {
+ vmx_inject_extint(intack.vector, intack.source);
+ return 1;
+ }
}
return 0;