Commit ba7c92ff authored by Dave Jones's avatar Dave Jones Committed by Dave Jones

[CPUFREQ] Work around AMD64 2nd identical PST errata

AMD recently errata'd the definition of the PSB/PST for recent Athlon 64 and Opteron parts.  The errata
allows for a second, identical PST for those parts.
The current powernow-k8 driver will not work in PST/PSB mode on those parts because it requires 
there be 1 and only 1 PST.

From: Mark Langsdorf
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 99852d93
......@@ -39,7 +39,7 @@
#define PFX "powernow-k8: "
#define BFX PFX "BIOS error: "
#define VERSION "version 1.00.09b"
#define VERSION "version 1.00.09e"
#include "powernow-k8.h"
/* serialize freq changes */
......@@ -596,6 +596,8 @@ static int find_psb_table(struct powernow_k8_data *data)
unsigned int i;
u32 mvs;
u8 maxvid;
u32 cpst = 0;
u32 thiscpuid;
for (i = 0xc0000; i < 0xffff0; i += 0x10) {
/* Scan BIOS looking for the signature. */
......@@ -634,7 +636,14 @@ static int find_psb_table(struct powernow_k8_data *data)
dprintk(KERN_INFO PFX "maximum voltage step: %d - 0x%x\n", mvs, data->vidmvs);
dprintk(KERN_DEBUG PFX "numpst: 0x%x\n", psb->numpst);
if (psb->numpst != 1) {
cpst = psb->numpst;
if ((psb->cpuid == 0x00000fc0) || (psb->cpuid == 0x00000fe0) ){
thiscpuid = cpuid_eax(CPUID_PROCESSOR_SIGNATURE);
if ((thiscpuid == 0x00000fc0) || (thiscpuid == 0x00000fe0) ) {
cpst = 1;
}
}
if (cpst != 1) {
printk(KERN_ERR BFX "numpst must be 1\n");
return -ENODEV;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment