|
@@ -118,20 +118,17 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data)
|
|
|
u32 i = 0;
|
|
|
|
|
|
if (cpu_family == CPU_HW_PSTATE) {
|
|
|
- if (data->currpstate == HW_PSTATE_INVALID) {
|
|
|
- /* read (initial) hw pstate if not yet set */
|
|
|
- rdmsr(MSR_PSTATE_STATUS, lo, hi);
|
|
|
- i = lo & HW_PSTATE_MASK;
|
|
|
-
|
|
|
- /*
|
|
|
- * a workaround for family 11h erratum 311 might cause
|
|
|
- * an "out-of-range Pstate if the core is in Pstate-0
|
|
|
- */
|
|
|
- if (i >= data->numps)
|
|
|
- data->currpstate = HW_PSTATE_0;
|
|
|
- else
|
|
|
- data->currpstate = i;
|
|
|
- }
|
|
|
+ rdmsr(MSR_PSTATE_STATUS, lo, hi);
|
|
|
+ i = lo & HW_PSTATE_MASK;
|
|
|
+ data->currpstate = i;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * a workaround for family 11h erratum 311 might cause
|
|
|
+ * an "out-of-range Pstate if the core is in Pstate-0
|
|
|
+ */
|
|
|
+ if ((boot_cpu_data.x86 == 0x11) && (i >= data->numps))
|
|
|
+ data->currpstate = HW_PSTATE_0;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
do {
|