]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit
cpuidle: Single/Global registration of idle states
authorDeepthi Dharwar <deepthi@linux.vnet.ibm.com>
Fri, 28 Oct 2011 10:50:42 +0000 (16:20 +0530)
committerLen Brown <len.brown@intel.com>
Mon, 7 Nov 2011 02:13:58 +0000 (21:13 -0500)
commit46bcfad7a819bd17ac4e831b04405152d59784ab
tree20041e788154d103edff2699f88d4a30320e3ee2
parent4202735e8ab6ecfb0381631a0d0b58fefe0bd4e2
cpuidle: Single/Global registration of idle states

This patch makes the cpuidle_states structure global (single copy)
instead of per-cpu. The statistics needed on per-cpu basis
by the governor are kept per-cpu. This simplifies the cpuidle
subsystem as state registration is done by single cpu only.
Having single copy of cpuidle_states saves memory. Rare case
of asymmetric C-states can be handled within the cpuidle driver
and architectures such as POWER do not have asymmetric C-states.

Having single/global registration of all the idle states,
dynamic C-state transitions on x86 are handled by
the boot cpu. Here, the boot cpu  would disable all the devices,
re-populate the states and later enable all the devices,
irrespective of the cpu that would receive the notification first.

Reference:
https://lkml.org/lkml/2011/4/25/83

Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
Signed-off-by: Trinabh Gupta <g.trinabh@gmail.com>
Tested-by: Jean Pihet <j-pihet@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
Acked-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Len Brown <len.brown@intel.com>
16 files changed:
arch/arm/mach-at91/cpuidle.c
arch/arm/mach-davinci/cpuidle.c
arch/arm/mach-exynos4/cpuidle.c
arch/arm/mach-kirkwood/cpuidle.c
arch/arm/mach-omap2/cpuidle34xx.c
arch/sh/kernel/cpu/shmobile/cpuidle.c
drivers/acpi/processor_driver.c
drivers/acpi/processor_idle.c
drivers/cpuidle/cpuidle.c
drivers/cpuidle/driver.c
drivers/cpuidle/governors/ladder.c
drivers/cpuidle/governors/menu.c
drivers/cpuidle/sysfs.c
drivers/idle/intel_idle.c
include/acpi/processor.h
include/linux/cpuidle.h