diff options
| -rw-r--r-- | arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 2709b3c183b4..331021112f2b 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -118,20 +118,17 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data) | |||
| 118 | u32 i = 0; | 118 | u32 i = 0; |
| 119 | 119 | ||
| 120 | if (cpu_family == CPU_HW_PSTATE) { | 120 | if (cpu_family == CPU_HW_PSTATE) { |
| 121 | if (data->currpstate == HW_PSTATE_INVALID) { | 121 | rdmsr(MSR_PSTATE_STATUS, lo, hi); |
| 122 | /* read (initial) hw pstate if not yet set */ | 122 | i = lo & HW_PSTATE_MASK; |
| 123 | rdmsr(MSR_PSTATE_STATUS, lo, hi); | 123 | data->currpstate = i; |
| 124 | i = lo & HW_PSTATE_MASK; | 124 | |
| 125 | 125 | /* | |
| 126 | /* | 126 | * a workaround for family 11h erratum 311 might cause |
| 127 | * a workaround for family 11h erratum 311 might cause | 127 | * an "out-of-range Pstate if the core is in Pstate-0 |
| 128 | * an "out-of-range Pstate if the core is in Pstate-0 | 128 | */ |
| 129 | */ | 129 | if ((boot_cpu_data.x86 == 0x11) && (i >= data->numps)) |
| 130 | if (i >= data->numps) | 130 | data->currpstate = HW_PSTATE_0; |
| 131 | data->currpstate = HW_PSTATE_0; | 131 | |
| 132 | else | ||
| 133 | data->currpstate = i; | ||
| 134 | } | ||
| 135 | return 0; | 132 | return 0; |
| 136 | } | 133 | } |
| 137 | do { | 134 | do { |
