bk://linux-dj.bkbits.net/cpufreq davej@delerium.kernelslacker.org|ChangeSet|20040912215458|17123 davej # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/09/10 14:20:20+01:00 davej@redhat.com # [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: Dave Jones # # arch/i386/kernel/cpu/cpufreq/powernow-k8.c # 2004/09/10 14:19:12+01:00 davej@redhat.com +11 -2 # [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: Dave Jones # # ChangeSet # 2004/09/08 11:45:22-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # arch/i386/kernel/smpboot.c # 2004/09/08 11:45:18-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/09/03 21:23:19+01:00 davej@redhat.com # [CPUFREQ] speedstep-smi: only allow it to run on mobile Intel Pentium III # # speedstep-smi only makes sense on Intel mobile Pentium III systems. # So, unify the distributed checks for speedstep_processor there, # and disallow P4s. # # Signed-off-by: Dominik Brodowski # Signed-off-by: Dave Jones # # arch/i386/kernel/cpu/cpufreq/speedstep-smi.c # 2004/09/03 21:23:10+01:00 davej@redhat.com +12 -13 # [CPUFREQ] speedstep-smi: only allow it to run on mobile Intel Pentium III # # speedstep-smi only makes sense on Intel mobile Pentium III systems. # So, unify the distributed checks for speedstep_processor there, # and disallow P4s. # # Signed-off-by: Dominik Brodowski # Signed-off-by: Dave Jones # # ChangeSet # 2004/08/25 14:07:34-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # arch/i386/kernel/smpboot.c # 2004/08/25 14:07:30-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/24 17:39:15-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/cpufreq # into bix.(none):/usr/src/bk-cpufreq # # include/asm-i386/acpi.h # 2004/08/24 17:39:11-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/24 17:39:11-07:00 akpm@bix.(none) +0 -0 # Auto merged # # arch/i386/kernel/smpboot.c # 2004/08/24 17:39:11-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/24 17:37:54-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # arch/i386/kernel/smpboot.c # 2004/08/24 17:37:47-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/23 13:53:34-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/cpufreq # into bix.(none):/usr/src/bk-cpufreq # # include/asm-i386/acpi.h # 2004/08/23 13:53:31-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/23 13:53:31-07:00 akpm@bix.(none) +0 -0 # Auto merged # # arch/i386/kernel/smpboot.c # 2004/08/23 13:53:31-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/22 21:09:40-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # include/asm-i386/acpi.h # 2004/08/22 21:09:36-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/22 21:09:36-07:00 akpm@bix.(none) +0 -0 # Auto merged # # arch/i386/kernel/smpboot.c # 2004/08/22 21:09:36-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/20 02:10:39-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/cpufreq # into bix.(none):/usr/src/bk-cpufreq # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/20 02:10:35-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/17 14:12:14-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/cpufreq # into bix.(none):/usr/src/bk-cpufreq # # arch/i386/kernel/smpboot.c # 2004/08/17 14:12:10-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/15 01:01:43-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/cpufreq # into bix.(none):/usr/src/bk-cpufreq # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/15 01:01:40-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/15 01:00:46-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # include/asm-i386/acpi.h # 2004/08/15 01:00:42-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/08 02:12:22-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-cpufreq # # drivers/cpufreq/cpufreq_userspace.c # 2004/08/08 02:12:18-07:00 akpm@bix.(none) +0 -0 # Auto merged # diff -Nru a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c --- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c 2004-09-12 22:00:50 -07:00 +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c 2004-09-12 22:00:50 -07:00 @@ -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 @@ 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 @@ 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; } diff -Nru a/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c --- a/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2004-09-12 22:00:50 -07:00 +++ b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2004-09-12 22:00:50 -07:00 @@ -260,12 +260,6 @@ if (result) { /* fall back to speedstep_lib.c dection mechanism: try both states out */ dprintk(KERN_INFO PFX "could not detect low and high frequencies by SMI call.\n"); - if (!speedstep_processor) - speedstep_processor = speedstep_detect_processor(); - - if (!speedstep_processor) - return -ENODEV; - result = speedstep_get_freqs(speedstep_processor, &speedstep_freqs[SPEEDSTEP_LOW].frequency, &speedstep_freqs[SPEEDSTEP_HIGH].frequency, @@ -310,10 +304,6 @@ { if (cpu) return -ENODEV; - if (!speedstep_processor) - speedstep_processor = speedstep_detect_processor(); - if (!speedstep_processor) - return 0; return speedstep_get_processor_frequency(speedstep_processor); } @@ -354,10 +344,19 @@ */ static int __init speedstep_init(void) { - struct cpuinfo_x86 *c = cpu_data; + speedstep_processor = speedstep_detect_processor(); + + switch (speedstep_processor) { + case SPEEDSTEP_PROCESSOR_PIII_T: + case SPEEDSTEP_PROCESSOR_PIII_C: + case SPEEDSTEP_PROCESSOR_PIII_C_EARLY: + break; + default: + speedstep_processor = 0; + } - if (c->x86_vendor != X86_VENDOR_INTEL) { - printk (KERN_INFO PFX "No Intel CPU detected.\n"); + if (!speedstep_processor) { + dprintk (KERN_INFO PFX "No supported Intel CPU detected.\n"); return -ENODEV; }