Skip to content

Commit 0c2df2a

Browse files
kmeawrkrcmar
authored andcommitted
KVM: Handle MSR_IA32_PERF_CTL
Intel CPUs having Turbo Boost feature implement an MSR to provide a control interface via rdmsr/wrmsr instructions. One could detect the presence of this feature by issuing one of these instructions and handling the #GP exception which is generated in case the referenced MSR is not implemented by the CPU. KVM's vCPU model behaves exactly as a real CPU in this case by injecting a fault when MSR_IA32_PERF_CTL is called (which KVM does not support). However, some operating systems use this register during an early boot stage in which their kernel is not capable of handling #GP correctly, causing #DP and finally a triple fault effectively resetting the vCPU. This patch implements a dummy handler for MSR_IA32_PERF_CTL to avoid the crashes. Signed-off-by: Dmitry Bilunov <[email protected]> Signed-off-by: Radim Krčmář <[email protected]>
1 parent b19ee2f commit 0c2df2a

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

arch/x86/kvm/x86.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
23142314
case MSR_AMD64_NB_CFG:
23152315
case MSR_FAM10H_MMIO_CONF_BASE:
23162316
case MSR_AMD64_BU_CFG2:
2317+
case MSR_IA32_PERF_CTL:
23172318
msr_info->data = 0;
23182319
break;
23192320
case MSR_K7_EVNTSEL0 ... MSR_K7_EVNTSEL3:

0 commit comments

Comments
 (0)