Skip to content

Commit ef78f05

Browse files
sean-jcedoardocanepa
authored andcommitted
KVM: VMX: Allow guest to set DEBUGCTL.RTM_DEBUG if RTM is supported
BugLink: https://bugs.launchpad.net/bugs/2126463 commit 17ec2f965344ee3fd6620bef7ef68792f4ac3af0 upstream. Let the guest set DEBUGCTL.RTM_DEBUG if RTM is supported according to the guest CPUID model, as debug support is supposed to be available if RTM is supported, and there are no known downsides to letting the guest debug RTM aborts. Note, there are no known bug reports related to RTM_DEBUG, the primary motivation is to reduce the probability of breaking existing guests when a future change adds a missing consistency check on vmcs12.GUEST_DEBUGCTL (KVM currently lets L2 run with whatever hardware supports; whoops). Note #2, KVM already emulates DR6.RTM, and doesn't restrict access to DR7.RTM. Fixes: 83c5291 ("KVM: x86: expose Intel cpu new features (HLE, RTM) to guest") Cc: [email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Sean Christopherson <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> Signed-off-by: Noah Wager <[email protected]> Signed-off-by: Edoardo Canepa <[email protected]>
1 parent 4efa189 commit ef78f05

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

arch/x86/include/asm/msr-index.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@
417417
#define DEBUGCTLMSR_FREEZE_PERFMON_ON_PMI (1UL << 12)
418418
#define DEBUGCTLMSR_FREEZE_IN_SMM_BIT 14
419419
#define DEBUGCTLMSR_FREEZE_IN_SMM (1UL << DEBUGCTLMSR_FREEZE_IN_SMM_BIT)
420+
#define DEBUGCTLMSR_RTM_DEBUG BIT(15)
420421

421422
#define MSR_PEBS_FRONTEND 0x000003f7
422423

arch/x86/kvm/vmx/vmx.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,6 +2191,10 @@ static u64 vmx_get_supported_debugctl(struct kvm_vcpu *vcpu, bool host_initiated
21912191
(host_initiated || intel_pmu_lbr_is_enabled(vcpu)))
21922192
debugctl |= DEBUGCTLMSR_LBR | DEBUGCTLMSR_FREEZE_LBRS_ON_PMI;
21932193

2194+
if (boot_cpu_has(X86_FEATURE_RTM) &&
2195+
(host_initiated || guest_cpu_cap_has(vcpu, X86_FEATURE_RTM)))
2196+
debugctl |= DEBUGCTLMSR_RTM_DEBUG;
2197+
21942198
return debugctl;
21952199
}
21962200

0 commit comments

Comments
 (0)