linux/arch/i386/kernel
Daniel Drake dc2585eb47 [CPUFREQ] powernow-k7: fix MHz rounding issue with perflib
When the PST tables are broken, powernow-k7 uses ACPI's processor_perflib to
deduce the available frequency multipliers from the _PSS tables.

Upon frequency change, processor_perflib performs some verification on the
frequency (checks that it's within allowable bounds).

powernow-k7 deals with absolute frequencies in KHz, whereas perflib only
deals with MHz values. When performing the above verification, perflib
multiplies the MHz values by 1000 to obtain the KHz value.

We then end up with situations like the following:
 - powernow-k7 multiplies the multiplier by the FSB, and obtains a value
   such as 1266768 KHz
 - perflib belives the same state has frequency of 1266 MHz
 - acpi_processor_ppc_notifier calls cpufreq_verify_within_limits to verify
   that 1266768 is in the allowable range of 0 to 1266000 (i.e. 1266 * 1000)
 - it's not, so that frequency is rejected
 - the maximum CPU frequency is not reachable

This patch solves the problem by rounding up the MHz values stored in perflib's
tables. Additionally it corrects a broken URL.

It also fixes http://bugzilla.kernel.org/show_bug.cgi?id=8255 although this
case is a bit different: the frequencies in the _PSS tables are wildly wrong,
but we get better results if we force ACPI to respect the fsb * multiplier
calculations (even though it seems that the multiplier values aren't entirely
correct either).

Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: Dave Jones <davej@redhat.com>
2007-05-13 17:25:13 -04:00
..
acpi [PATCH] x86: default to physical mode on hotplug CPU kernels 2007-05-02 19:27:04 +02:00
cpu [CPUFREQ] powernow-k7: fix MHz rounding issue with perflib 2007-05-13 17:25:13 -04:00
.gitignore
Makefile x86, serial: convert legacy COM ports to platform devices 2007-05-08 11:15:23 -07:00
alternative.c Revert "[PATCH] x86: __pa and __pa_symbol address space separation" 2007-05-07 08:44:24 -07:00
apic.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
apm.c apm: fix incorrect comment 2007-05-08 11:15:10 -07:00
asm-offsets.c [PATCH] i386: map enough initial memory to create lowmem mappings 2007-05-02 19:27:16 +02:00
bootflag.c
cpuid.c Add suspend-related notifications for CPU hotplug 2007-05-09 12:30:56 -07:00
crash.c move die notifier handling to common code 2007-05-08 11:15:04 -07:00
crash_dump.c
doublefault.c [PATCH] i386: i386 separate hardware-defined TSS from Linux additions 2007-05-02 19:27:13 +02:00
e820.c [PATCH] i386: Drop noisy e820 debugging printks 2007-05-02 19:27:21 +02:00
early_printk.c
efi.c EFI: warn only for pre-1.00 system tables 2007-05-08 11:15:10 -07:00
efi_stub.S
entry.S [PATCH] i386: fix wrong comment for syscall stack layout 2007-05-02 19:27:19 +02:00
head.S Revert "[PATCH] paravirt: Add startup infrastructure for paravirtualization" 2007-05-10 09:26:53 -07:00
hpet.c [PATCH] Add suspend/resume for HPET 2007-03-29 10:25:32 -07:00
i386_ksyms.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
i387.c
i8237.c
i8253.c [VOYAGER] clockevents: correct boot cpu is zero assumption 2007-05-01 10:06:42 -05:00
i8259.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
io_apic.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
ioport.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
irq.c [PATCH] i386: Convert PDA into the percpu section 2007-05-02 19:27:16 +02:00
kprobes.c Kprobes: The ON/OFF knob thru debugfs 2007-05-08 11:15:19 -07:00
ldt.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
legacy_serial.c x86, serial: convert legacy COM ports to platform devices 2007-05-08 11:15:23 -07:00
machine_kexec.c
mca.c [PATCH] i386: replace kmalloc+memset with kzalloc 2006-12-07 02:14:19 +01:00
microcode.c microcode: use suspend-related CPU hotplug notifications 2007-05-09 12:30:56 -07:00
module.c [PATCH] Generic BUG for i386 2006-12-08 08:28:39 -08:00
mpparse.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
msr.c Add suspend-related notifications for CPU hotplug 2007-05-09 12:30:56 -07:00
nmi.c move die notifier handling to common code 2007-05-08 11:15:04 -07:00
numaq.c
paravirt.c Revert "[PATCH] paravirt: Add startup infrastructure for paravirtualization" 2007-05-10 09:26:53 -07:00
pci-dma.c dma_declare_coherent_memory wrong allocation 2007-05-08 11:15:14 -07:00
pcspeaker.c [PATCH] x86: Unify pcspeaker platform device code between i386/x86-64 2007-02-13 13:26:26 +01:00
process.c SLUB: i386 support 2007-05-12 11:26:22 -07:00
ptrace.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
quirks.c [PATCH] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 2007-05-02 19:27:04 +02:00
reboot.c [PATCH] i386: replace spin_lock_irqsave with spin_lock 2007-05-02 19:27:18 +02:00
reboot_fixups.c [PATCH] i386: clean up mach_reboot_fixups 2007-05-02 19:27:06 +02:00
relocate_kernel.S
scx200.c
setup.c [PATCH] clocksource init adjustments (fix bug #7426) 2007-03-05 07:57:53 -08:00
sigframe.h
signal.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
smp.c SLUB: i386 support 2007-05-12 11:26:22 -07:00
smpboot.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
srat.c ACPI: build fix for IBM x440 - CONFIG_X86_SUMMIT 2007-02-02 21:47:33 -05:00
summit.c
sys_i386.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
syscall_table.S signal/timer/event: eventfd wire up x86 arches 2007-05-11 08:29:37 -07:00
sysenter.c [PATCH] i386: In compat mode, the return value here was uninitialized. 2007-05-02 19:27:16 +02:00
time.c [PATCH] i386: pit_latch_buggy has no effect 2007-05-02 19:27:05 +02:00
topology.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
trampoline.S [PATCH] i386: Rename boot_gdt_table to boot_gdt 2007-05-02 19:27:10 +02:00
traps.c wrap access to thread_info 2007-05-09 12:30:56 -07:00
tsc.c [PATCH] i386: remove xtime_lock'ing around cpufreq notifier 2007-05-02 19:27:18 +02:00
tsc_sync.c [PATCH] x86: rewrite SMP TSC sync code 2007-02-16 08:13:57 -08:00
verify_cpu.S i386: Fix compilation of verify_cpu.S on old binutils 2007-05-11 12:53:00 -07:00
vm86.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
vmi.c [PATCH] x86: PARAVIRT: Jeremy Fitzhardinge <jeremy@goop.org> 2007-05-02 19:27:16 +02:00
vmiclock.c [PATCH] i386: Convert VMI timer to use clock events 2007-05-02 19:27:16 +02:00
vmlinux.lds.S Revert "[PATCH] paravirt: Add startup infrastructure for paravirtualization" 2007-05-10 09:26:53 -07:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S
vsyscall-sysenter.S
vsyscall.S
vsyscall.lds.S [PATCH] i386: VDSO_PRELINK warning fix 2007-05-02 19:27:09 +02:00