linux/drivers/acpi
Andi Kleen 2815ab92ba ACPI: Do cpufreq clamping for throttling per package v2
On Intel CPUs the processor typically uses the highest frequency
set by any logical CPU. When the system overheats
Linux first forces the frequency to the lowest available one
to lower the temperature.

However this was done only per logical CPU, which means all
logical CPUs in a package would need to go through this before
the frequency is actually lowered.

Worse this delay actually prevents real throttling, because
the real throttle code only proceeds when the lowest frequency
is already reached.

So when a throttle event happens force the lowest frequency
for all CPUs in the package where it happened. The per CPU
state is now kept per package, not per logical CPU. An alternative
would be to do it per cpufreq unit, but since we want to bring
down the temperature of the complete chip it's better
to do it for all.

In principle it may even make sense to do it for all CPUs,
but I kept it on the package for now.

With this change the frequency is actually lowered, which
in terms also allows real throttling to proceed.

I also removed an unnecessary per cpu variable initialization.

v2: Fix package mapping

Cc: <stable@vger.kernel.org>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2012-03-22 02:16:14 -04:00
..
acpica Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux 2012-01-18 15:51:48 -08:00
apei Use acpi_os_map_memory() instead of ioremap() in einj driver 2012-01-23 19:39:10 -05:00
ac.c treewide: fix potentially dangerous trailing ';' in #defined values/expressions 2011-07-21 14:10:00 +02:00
acpi_ipmi.c IPMI/ACPI: Add the IPMI opregion driver to enable ACPI to access BMC controller 2010-12-14 00:22:14 -05:00
acpi_memhotplug.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
acpi_pad.c ACPI: minor printk format change in acpi_pad 2011-03-23 01:36:45 -04:00
battery.c switch procfs to umode_t use 2012-01-03 22:54:56 -05:00
blacklist.c acpi: delete module.h include from files explicitly not needing it 2011-10-31 19:30:33 -04:00
bus.c ACPI: Drop ACPI_NO_HARDWARE_INIT 2011-11-06 20:32:31 -05:00
button.c ACPI button: remove unused procfs I/F 2011-03-22 23:20:35 -04:00
cm_sbs.c
container.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
custom_method.c ACPI: Split out custom_method functionality into an own driver 2011-05-29 01:50:40 -04:00
debugfs.c acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL 2011-10-31 19:30:34 -04:00
dock.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
ec_sys.c switch debugfs to umode_t 2012-01-03 22:54:56 -05:00
ec.c Merge branch 'ec-cleanup' into release 2011-05-29 04:40:39 -04:00
event.c acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL 2011-10-31 19:30:34 -04:00
fan.c ACPI: constify ops structs 2011-07-16 18:36:17 -04:00
glue.c acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL 2011-10-31 19:30:34 -04:00
hed.c ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
internal.h ACPI: Cleanup custom_method debug stuff 2011-05-29 01:50:04 -04:00
Kconfig Kconfig: acpi: Fix typo in comment. 2012-01-04 11:47:45 +01:00
Makefile ACPI: Remove ./drivers/acpi/atomicio.[ch] 2012-01-21 01:09:00 -05:00
numa.c ACPI: Store SRAT table revision 2012-01-17 04:19:04 -05:00
nvs.c ACPI, Record ACPI NVS regions 2012-01-17 03:54:44 -05:00
osl.c ACPI, APEI: Add RAM mapping support to ACPI 2012-01-21 01:08:38 -05:00
pci_bind.c PCI / ACPI / PM: Platform support for PCI PME wake-up 2010-02-22 16:21:02 -08:00
pci_irq.c PCI/PM/Runtime: make PCI traces quieter 2012-01-06 12:11:16 -08:00
pci_link.c ACPI: Use syscore_ops instead of sysdev class and sysdev 2011-03-18 18:22:21 -04:00
pci_root.c PCI: Rework ASPM disable code 2012-01-06 12:10:26 -08:00
pci_slot.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
power.c ACPI / PM: Check status of power resources under mutexes 2011-01-12 05:05:39 -05:00
proc.c acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL 2011-10-31 19:30:34 -04:00
processor_core.c ACPI: processor: fix acpi_get_cpuid for UP processor 2012-01-17 05:25:08 -05:00
processor_driver.c ACPI: remove duplicated lines of merging problems with acpi_processor_add 2012-02-07 14:31:35 -08:00
processor_idle.c ACPI / cpuidle: Remove acpi_idle_suspend (to fix suspend regression) 2011-11-12 21:30:14 -02:00
processor_perflib.c [CPUFREQ] use dynamic debug instead of custom infrastructure 2011-05-04 11:50:57 -04:00
processor_thermal.c ACPI: Do cpufreq clamping for throttling per package v2 2012-03-22 02:16:14 -04:00
processor_throttling.c Merge branch 'x86/urgent' into x86-mm 2011-05-02 14:16:47 +02:00
reboot.c ACPI: Make sure the FADT is at least rev 2 before using the reset register 2011-03-22 23:52:49 -04:00
sbs.c Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2011-08-02 21:17:02 -10:00
sbshc.c acpi: add module.h to files implicitly using/relying on it. 2011-10-31 19:30:32 -04:00
sbshc.h
scan.c ACPI: use kstrdup() 2011-11-06 19:13:44 -05:00
sleep.c ACPI / PM: Add Sony Vaio VPCCW29FX to nonvs blacklist. 2012-01-21 01:29:50 -05:00
sleep.h ACPI: static sleep_states[] and acpi_gts_bfs_check 2010-10-19 13:44:37 -04:00
sysfs.c ACPI: Export FADT pm_profile integer value to userspace 2011-11-06 20:48:42 -05:00
tables.c ACPI: delete the "acpi=ht" boot option 2010-03-14 20:58:38 -04:00
thermal.c ACPI: constify ops structs 2011-07-16 18:36:17 -04:00
utils.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
video_detect.c acpi: add export.h to files using THIS_MODULE/EXPORT_SYMBOL 2011-10-31 19:30:34 -04:00
video.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
wakeup.c ACPI / Wakeup: Enable button GPEs unconditionally during initialization 2011-02-12 01:39:53 +01:00