mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-12 15:44:01 +08:00
kvm: Handle reads of SandyBridge RAPL PMU MSRs rather than injecting #GP
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 (eranian@google.com). Signed-off-by: Venkatesh Srinivas <venkateshs@google.com> Signed-off-by: Jon Cargille <jcargill@google.com> Reviewed-by: Jim Mattson <jmattson@google.com> Message-Id: <20200416184254.248374-1-jcargill@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7289fdb5dc
commit
2ca1a06a54
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user