cpufreq/intel_pstate: Add function to check that all MSR's are valid (rhbz 922923)
This commit is contained in:
parent
31befe51b6
commit
6f9fa1acc9
56
cpufreq-intel-pstate-validate-msrs.patch
Normal file
56
cpufreq-intel-pstate-validate-msrs.patch
Normal file
@ -0,0 +1,56 @@
|
||||
commit 866111646f2c5d4c6c25e2bb97f5c61c3992defb
|
||||
Author: Dirk Brandewie <dirk.brandewie@gmail.com>
|
||||
Date: Mon Mar 18 16:55:02 2013 -0700
|
||||
|
||||
cpufreq/intel_pstate: Add function to check that all MSR's are valid
|
||||
|
||||
Some VMs seem to try to implement some MSRs but not all the registers
|
||||
the driver needs. Check to make sure all the MSR that we need are
|
||||
available. If any of the required MSRs are not available refuse to
|
||||
load.
|
||||
|
||||
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
|
||||
|
||||
--- linux-3.9.0-0.rc3.git0.2.fc19.x86_64/drivers/cpufreq/intel_pstate.c~ 2013-03-19 14:54:33.489581718 -0400
|
||||
+++ linux-3.9.0-0.rc3.git0.2.fc19.x86_64/drivers/cpufreq/intel_pstate.c 2013-03-19 14:55:09.667523730 -0400
|
||||
@@ -752,6 +752,30 @@ static struct cpufreq_driver intel_pstat
|
||||
|
||||
static int __initdata no_load;
|
||||
|
||||
+static int intel_pstate_msrs_not_valid(void)
|
||||
+{
|
||||
+ /* Check that all the msr's we are using are valid. */
|
||||
+ u64 aperf, mperf, tmp;
|
||||
+
|
||||
+ rdmsrl(MSR_IA32_APERF, aperf);
|
||||
+ rdmsrl(MSR_IA32_MPERF, mperf);
|
||||
+
|
||||
+ if (!intel_pstate_min_pstate() ||
|
||||
+ !intel_pstate_max_pstate() ||
|
||||
+ !intel_pstate_turbo_pstate())
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ rdmsrl(MSR_IA32_APERF, tmp);
|
||||
+ if (!(tmp - aperf))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ rdmsrl(MSR_IA32_MPERF, tmp);
|
||||
+ if (!(tmp - mperf))
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int __init intel_pstate_init(void)
|
||||
{
|
||||
int cpu, rc = 0;
|
||||
@@ -764,6 +788,9 @@ static int __init intel_pstate_init(void
|
||||
if (!id)
|
||||
return -ENODEV;
|
||||
|
||||
+ if (intel_pstate_msrs_not_valid())
|
||||
+ return -ENODEV;
|
||||
+
|
||||
pr_info("Intel P-state driver initializing.\n");
|
||||
|
||||
all_cpu_data = vmalloc(sizeof(void *) * num_possible_cpus());
|
@ -751,6 +751,8 @@ Patch22000: weird-root-dentry-name-debug.patch
|
||||
#selinux ptrace child permissions
|
||||
Patch22001: selinux-apply-different-permission-to-ptrace-child.patch
|
||||
|
||||
Patch23000: cpufreq-intel-pstate-validate-msrs.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
@ -1416,6 +1418,9 @@ ApplyPatch weird-root-dentry-name-debug.patch
|
||||
#selinux ptrace child permissions
|
||||
ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
|
||||
|
||||
# rhbz 922923
|
||||
ApplyPatch cpufreq-intel-pstate-validate-msrs.patch
|
||||
|
||||
#rhbz 859485
|
||||
ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch
|
||||
|
||||
@ -2285,6 +2290,9 @@ fi
|
||||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Tue Mar 19 2013 Dave Jones <davej@redhat.com>
|
||||
- cpufreq/intel_pstate: Add function to check that all MSR's are valid (rhbz 922923)
|
||||
|
||||
* Mon Mar 18 2013 Dave Jones <davej@redhat.com> - 3.9.0-0.rc3.git0.4
|
||||
- s390x config option changes from Dan Horák <dan@danny.cz>
|
||||
- enable PCI
|
||||
|
Loading…
Reference in New Issue
Block a user