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 bce576d7478..e0329f9fa40 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 | } |