kvm: Handle reads of SandyBridge RAPL PMU MSRs rather than injecting #GP
PATCH 1/1 kvm: Handle reads of SandyBridge RAPL PMU MSRs rather than injecting #GP
From: Venkatesh Srinivas <[email protected]>
Linux 3.14 unconditionally reads the RAPL PMU MSRs on boot, without handling General Protection Faults on reading those MSRs. Rather than injecting a #GP, which prevents boot, handle the MSRs by returning 0 for their data. Zero was checked to be safe by code review of the RAPL PMU driver and in discussion with the original driver author ([email protected]).
Signed-off-by Venkatesh Srinivas <[email protected]>
Signed-off-by Jon Cargille <[email protected]>
Reviewed-by Jim Mattson <[email protected]>
--- arch/x86/kvm/x86.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/x86/kvm/x86.c +11 -0
@@ -3060,6 +3060,17 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)case MSR_IA32_PERF_CTL :case MSR_AMD64_DC_CFG :case MSR_F15H_EX_CFG : +/* +* Intel Sandy Bridge CPUs must support the RAPL (running average power +* limit) MSRs. Just return 0, as we do not want to expose the host +* data here. Do not conditionalize this on CPUID, as KVM does not do +* so for existing CPU-specific MSRs. +*/ +case MSR_RAPL_POWER_UNIT : +case MSR_PP0_ENERGY_STATUS :/* Power plane 0 (core) */ +case MSR_PP1_ENERGY_STATUS :/* Power plane 1 (graphics uncore) */ +case MSR_PKG_ENERGY_STATUS :/* Total package */ +case MSR_DRAM_ENERGY_STATUS :/* DRAM controller */ msr_info->data =0 ;break ; case MSR_F15H_PERF_CTL0 ... MSR_F15H_PERF_CTR5:
Signature · 1 line
2.26.0.110.g2183baf09c-goog