KVM: VMX: add MSR_IA32_TSX_CTRL into msrs_to_save

Add MSR_IA32_TSX_CTRL into msrs_to_save[] to explicitly tell userspace to
save/restore the register value during migration. Missing this may cause
userspace that relies on KVM ioctl(KVM_GET_MSR_INDEX_LIST) fail to port the
value to the target VM.

In addition, there is no need to add MSR_IA32_TSX_CTRL when
ARCH_CAP_TSX_CTRL_MSR is not supported in kvm_get_arch_capabilities(). So
add the checking in kvm_probe_msr_to_save().

Fixes: c11f83e0626b ("KVM: vmx: implement MSR_IA32_TSX_CTRL disable RTM functionality")
Reported-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Mingwei Zhang <mizhang@google.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Jim Mattson <jmattson@google.com>
Message-Id: <20230509032348.1153070-1-mizhang@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by Mingwei Zhang and committed by Paolo Bonzini b9846a69 275a8724

Changed files
+5 -1
arch
x86
kvm
+5 -1
arch/x86/kvm/x86.c
··· 1446 1446 #endif 1447 1447 MSR_IA32_TSC, MSR_IA32_CR_PAT, MSR_VM_HSAVE_PA, 1448 1448 MSR_IA32_FEAT_CTL, MSR_IA32_BNDCFGS, MSR_TSC_AUX, 1449 - MSR_IA32_SPEC_CTRL, 1449 + MSR_IA32_SPEC_CTRL, MSR_IA32_TSX_CTRL, 1450 1450 MSR_IA32_RTIT_CTL, MSR_IA32_RTIT_STATUS, MSR_IA32_RTIT_CR3_MATCH, 1451 1451 MSR_IA32_RTIT_OUTPUT_BASE, MSR_IA32_RTIT_OUTPUT_MASK, 1452 1452 MSR_IA32_RTIT_ADDR0_A, MSR_IA32_RTIT_ADDR0_B, ··· 7153 7153 case MSR_IA32_XFD: 7154 7154 case MSR_IA32_XFD_ERR: 7155 7155 if (!kvm_cpu_cap_has(X86_FEATURE_XFD)) 7156 + return; 7157 + break; 7158 + case MSR_IA32_TSX_CTRL: 7159 + if (!(kvm_get_arch_capabilities() & ARCH_CAP_TSX_CTRL_MSR)) 7156 7160 return; 7157 7161 break; 7158 7162 default: