hv: Disable HLT and PAUSE-loop exiting emulation in lapic passthrough
In lapic passthrough mode, it should passthrough HLT/PAUSE execution too. This patch disable their emulation when switch to lapic passthrough mode. Tracked-On: #4329 Tested-by: Dongsheng Zhang <dongsheng.x.zhang@intel.com> Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
3edde2608c
commit
b59e5a870a
|
@ -599,11 +599,13 @@ void switch_apicv_mode_x2apic(struct acrn_vcpu *vcpu)
|
||||||
|
|
||||||
value32 = exec_vmread32(VMX_PROC_VM_EXEC_CONTROLS);
|
value32 = exec_vmread32(VMX_PROC_VM_EXEC_CONTROLS);
|
||||||
value32 &= ~VMX_PROCBASED_CTLS_TPR_SHADOW;
|
value32 &= ~VMX_PROCBASED_CTLS_TPR_SHADOW;
|
||||||
|
value32 &= ~VMX_PROCBASED_CTLS_HLT;
|
||||||
exec_vmwrite32(VMX_PROC_VM_EXEC_CONTROLS, value32);
|
exec_vmwrite32(VMX_PROC_VM_EXEC_CONTROLS, value32);
|
||||||
|
|
||||||
exec_vmwrite32(VMX_TPR_THRESHOLD, 0U);
|
exec_vmwrite32(VMX_TPR_THRESHOLD, 0U);
|
||||||
|
|
||||||
value32 = exec_vmread32(VMX_PROC_VM_EXEC_CONTROLS2);
|
value32 = exec_vmread32(VMX_PROC_VM_EXEC_CONTROLS2);
|
||||||
|
value32 &= ~VMX_PROCBASED_CTLS2_PAUSE_LOOP;
|
||||||
value32 &= ~VMX_PROCBASED_CTLS2_VAPIC;
|
value32 &= ~VMX_PROCBASED_CTLS2_VAPIC;
|
||||||
if (is_apicv_advanced_feature_supported()) {
|
if (is_apicv_advanced_feature_supported()) {
|
||||||
value32 &= ~VMX_PROCBASED_CTLS2_VIRQ;
|
value32 &= ~VMX_PROCBASED_CTLS2_VIRQ;
|
||||||
|
|
Loading…
Reference in New Issue