]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: x86: trap AMD MSRs for the TSeg base and mask
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 18 Sep 2015 15:33:04 +0000 (17:33 +0200)
committerLuis Henriques <luis.henriques@canonical.com>
Fri, 9 Oct 2015 13:41:07 +0000 (14:41 +0100)
commit 3afb1121800128aae9f5722e50097fcf1a9d4d88 upstream.

These have roughly the same purpose as the SMRR, which we do not need
to implement in KVM.  However, Linux accesses MSR_K8_TSEG_ADDR at
boot, which causes problems when running a Xen dom0 under KVM.
Just return 0, meaning that processor protection of SMRAM is not
in effect.

Reported-by: M A Young <m.a.young@durham.ac.uk>
Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[ luis: backported to 3.16:
  - file rename: arch/x86/include/asm/msr-index.h ->
    arch/x86/include/uapi/asm/msr-index.h
  - adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
arch/x86/include/uapi/asm/msr-index.h
arch/x86/kvm/x86.c

index fcf2b3ae1bf0208d9e6b153dc81c6b0ed60f8352..7db049a7f7abb4dad661b5f0011c438dd790526d 100644 (file)
 /* C1E active bits in int pending message */
 #define K8_INTP_C1E_ACTIVE_MASK                0x18000000
 #define MSR_K8_TSEG_ADDR               0xc0010112
+#define MSR_K8_TSEG_MASK               0xc0010113
 #define K8_MTRRFIXRANGE_DRAM_ENABLE    0x00040000 /* MtrrFixDramEn bit    */
 #define K8_MTRRFIXRANGE_DRAM_MODIFY    0x00080000 /* MtrrFixDramModEn bit */
 #define K8_MTRR_RDMEM_WRMEM_MASK       0x18181818 /* Mask: RdMem|WrMem    */
index 27a8d4f9bce5aa768c44931a9bd84642c40e8529..4977c1a93d52d8a07704e61d4c411f5bf5ce6c1c 100644 (file)
@@ -2425,6 +2425,8 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
        case MSR_IA32_LASTINTFROMIP:
        case MSR_IA32_LASTINTTOIP:
        case MSR_K8_SYSCFG:
+       case MSR_K8_TSEG_ADDR:
+       case MSR_K8_TSEG_MASK:
        case MSR_K7_HWCR:
        case MSR_VM_HSAVE_PA:
        case MSR_K7_EVNTSEL0: