SVM now has completely independent handling of MSR_IA32_CR_PAT in
svm_get_msr() and svm_set_msr().

To avoid any confusion, move the logic for MSR_IA32_CR_PAT from
kvm_get_msr_common() and kvm_set_msr_common() into vmx_get_msr() and
vmx_set_msr().

Signed-off-by: Jim Mattson <[email protected]>
---
 arch/x86/kvm/vmx/vmx.c | 9 ++++++---
 arch/x86/kvm/x86.c     | 9 ---------
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 967b58a8ab9d..f5127dbd9104 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -2146,6 +2146,9 @@ int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data 
*msr_info)
                    !(vcpu->arch.arch_capabilities & ARCH_CAP_TSX_CTRL_MSR))
                        return 1;
                goto find_uret_msr;
+       case MSR_IA32_CR_PAT:
+               msr_info->data = vcpu->arch.pat;
+               break;
        case MSR_IA32_UMWAIT_CONTROL:
                if (!msr_info->host_initiated && !vmx_has_waitpkg(vmx))
                        return 1;
@@ -2468,10 +2471,10 @@ int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data 
*msr_info)
                        return 1;
                goto find_uret_msr;
        case MSR_IA32_CR_PAT:
-               ret = kvm_set_msr_common(vcpu, msr_info);
-               if (ret)
-                       break;
+               if (!kvm_pat_valid(data))
+                       return 1;
 
+               vcpu->arch.pat = data;
                if (is_guest_mode(vcpu) &&
                    get_vmcs12(vcpu)->vm_exit_controls & VM_EXIT_SAVE_IA32_PAT)
                        get_vmcs12(vcpu)->guest_ia32_pat = data;
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 416899b5dbe4..41936f83a17f 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -4025,12 +4025,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct 
msr_data *msr_info)
                        return 1;
                }
                break;
-       case MSR_IA32_CR_PAT:
-               if (!kvm_pat_valid(data))
-                       return 1;
-
-               vcpu->arch.pat = data;
-               break;
        case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000:
        case MSR_MTRRdefType:
                return kvm_mtrr_set_msr(vcpu, msr, data);
@@ -4436,9 +4430,6 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct 
msr_data *msr_info)
                msr_info->data = kvm_scale_tsc(rdtsc(), ratio) + offset;
                break;
        }
-       case MSR_IA32_CR_PAT:
-               msr_info->data = vcpu->arch.pat;
-               break;
        case MSR_MTRRcap:
        case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000:
        case MSR_MTRRdefType:
-- 
2.53.0.371.g1d285c8824-goog


Reply via email to