|
@@ -7694,9 +7694,10 @@ static void prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12)
|
|
|
~VM_ENTRY_IA32E_MODE) |
|
|
|
(vmcs_config.vmentry_ctrl & ~VM_ENTRY_IA32E_MODE));
|
|
|
|
|
|
- if (vmcs12->vm_entry_controls & VM_ENTRY_LOAD_IA32_PAT)
|
|
|
+ if (vmcs12->vm_entry_controls & VM_ENTRY_LOAD_IA32_PAT) {
|
|
|
vmcs_write64(GUEST_IA32_PAT, vmcs12->guest_ia32_pat);
|
|
|
- else if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT)
|
|
|
+ vcpu->arch.pat = vmcs12->guest_ia32_pat;
|
|
|
+ } else if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT)
|
|
|
vmcs_write64(GUEST_IA32_PAT, vmx->vcpu.arch.pat);
|
|
|
|
|
|
|
|
@@ -8217,8 +8218,10 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
|
|
|
vmcs_writel(GUEST_IDTR_BASE, vmcs12->host_idtr_base);
|
|
|
vmcs_writel(GUEST_GDTR_BASE, vmcs12->host_gdtr_base);
|
|
|
|
|
|
- if (vmcs12->vm_exit_controls & VM_EXIT_LOAD_IA32_PAT)
|
|
|
+ if (vmcs12->vm_exit_controls & VM_EXIT_LOAD_IA32_PAT) {
|
|
|
vmcs_write64(GUEST_IA32_PAT, vmcs12->host_ia32_pat);
|
|
|
+ vcpu->arch.pat = vmcs12->host_ia32_pat;
|
|
|
+ }
|
|
|
if (vmcs12->vm_exit_controls & VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL)
|
|
|
vmcs_write64(GUEST_IA32_PERF_GLOBAL_CTRL,
|
|
|
vmcs12->host_ia32_perf_global_ctrl);
|