diff options
| -rw-r--r-- | drivers/cpufreq/powernow-k8.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c index bce576d7478e..e0329f9fa40e 100644 --- a/drivers/cpufreq/powernow-k8.c +++ b/drivers/cpufreq/powernow-k8.c | |||
| @@ -926,23 +926,24 @@ static int fill_powernow_table_pstate(struct powernow_k8_data *data, | |||
| 926 | invalidate_entry(powernow_table, i); | 926 | invalidate_entry(powernow_table, i); |
| 927 | continue; | 927 | continue; |
| 928 | } | 928 | } |
| 929 | rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi); | ||
| 930 | if (!(hi & HW_PSTATE_VALID_MASK)) { | ||
| 931 | pr_debug("invalid pstate %d, ignoring\n", index); | ||
| 932 | invalidate_entry(powernow_table, i); | ||
| 933 | continue; | ||
| 934 | } | ||
| 935 | |||
| 936 | powernow_table[i].index = index; | ||
| 937 | |||
| 938 | /* Frequency may be rounded for these */ | 929 | /* Frequency may be rounded for these */ |
| 939 | if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10) | 930 | if ((boot_cpu_data.x86 == 0x10 && boot_cpu_data.x86_model < 10) |
| 940 | || boot_cpu_data.x86 == 0x11) { | 931 | || boot_cpu_data.x86 == 0x11) { |
| 932 | |||
| 933 | rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi); | ||
| 934 | if (!(hi & HW_PSTATE_VALID_MASK)) { | ||
| 935 | pr_debug("invalid pstate %d, ignoring\n", index); | ||
| 936 | invalidate_entry(powernow_table, i); | ||
| 937 | continue; | ||
| 938 | } | ||
| 939 | |||
| 941 | powernow_table[i].frequency = | 940 | powernow_table[i].frequency = |
| 942 | freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7); | 941 | freq_from_fid_did(lo & 0x3f, (lo >> 6) & 7); |
| 943 | } else | 942 | } else |
| 944 | powernow_table[i].frequency = | 943 | powernow_table[i].frequency = |
| 945 | data->acpi_data.states[i].core_frequency * 1000; | 944 | data->acpi_data.states[i].core_frequency * 1000; |
| 945 | |||
| 946 | powernow_table[i].index = index; | ||
| 946 | } | 947 | } |
| 947 | return 0; | 948 | return 0; |
| 948 | } | 949 | } |
