linux/arch
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
..
alpha utimensat implementation 2007-05-08 11:15:18 -07:00
arm Merge branch 'fixes' into devel 2007-05-12 16:12:12 +01:00
arm26 header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
avr32 Merge branch 'for-linus' of git://www.atmel.no/~hskinnemoen/linux/kernel/avr32 2007-05-09 12:50:25 -07:00
blackfin rename thread_info to stack 2007-05-09 12:30:56 -07:00
cris Fix trivial typos in Kconfig* files 2007-05-09 07:12:20 +02:00
frv frv: gdb: use __maybe_unused 2007-05-11 08:29:33 -07:00
h8300 h8300 syscall update 2007-05-11 08:29:33 -07:00
i386 [CPUFREQ] powernow-k7: fix MHz rounding issue with perflib 2007-05-13 17:25:13 -04:00
ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-05-11 12:53:21 -07:00
m32r m32r: fix tme_handler to check _PAGE_PRESENT bit 2007-05-11 08:29:33 -07:00
m68k header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
m68knommu Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-05-09 12:54:17 -07:00
mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-ip22 2007-05-11 10:00:50 -07:00
parisc rename thread_info to stack 2007-05-09 12:30:56 -07:00
powerpc [POWERPC] Add arch/powerpc support for the Motorola PrPMC2800 2007-05-12 11:32:50 +10:00
ppc [POWERPC] Spelling fixes: arch/ppc/ 2007-05-12 11:32:49 +10:00
s390 [PATCH] audit signal recipients 2007-05-11 05:38:25 -04:00
sh Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6 2007-05-09 13:08:20 -07:00
sh64 Simplify kallsyms_lookup() 2007-05-08 11:15:08 -07:00
sparc [SPARC]: Wire up signalfd/timerfd/eventfd syscalls. 2007-05-11 22:06:51 -07:00
sparc64 [SPARC]: Wire up signalfd/timerfd/eventfd syscalls. 2007-05-11 22:06:51 -07:00
um uml: shrink kernel stacks 2007-05-11 08:29:34 -07:00
v850 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-05-09 12:54:17 -07:00
x86_64 x86_64: use signalfd and timerfd compat syscalls 2007-05-12 09:47:15 -07:00
xtensa Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2007-05-09 12:54:17 -07:00