]> git.baikalelectronics.ru Git - kernel.git/commit
ACPI: Do cpufreq clamping for throttling per package v2
authorAndi Kleen <andi@firstfloor.org>
Mon, 6 Feb 2012 16:17:11 +0000 (08:17 -0800)
committerLen Brown <len.brown@intel.com>
Thu, 22 Mar 2012 06:16:14 +0000 (02:16 -0400)
commit16a1ce1b723c12b00f9da6fa5b24723e5c4d5d1f
tree5e18864dbc2f07f7da0f552ea5e4c2624d7a8fdb
parent2afaf64993c6053d4756b7092f0315ef2f64227b
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>
drivers/acpi/processor_thermal.c