On Fri, Oct 19, 2012 at 11:10:45AM +0100, Daniel Lezcano wrote: > The discussion about having different cpus on the system with > different latencies bring us to a first attemp by adding a > pointer in the cpuidle_device to the states array. > > But as Rafael suggested, it would make more sense to create a > driver per cpu [1]. > > This patch adds support for multiple cpuidle drivers. > > It creates a per cpu cpuidle driver pointer. > > In order to not break the different drivers, the function > cpuidle_register_driver > assign for each cpu, the driver. > > The multiple driver support is optional and if it is not set, the cpuide > driver > core code remains the same (except some code reorganisation). > > I did the following tests compiled, booted, tested without/with > CONFIG_CPU_IDLE, > with/without CONFIG_CPU_IDLE_MULTIPLE_DRIVERS. > > Tested on Core2 Duo T9500 with acpi_idle [and intel_idle] > Tested on ARM Dual Cortex-A9 U8500 (aka Snowball) > > V1 tested on Tegra3 and Vexpress TC2
I tested v2 on the TC2 dual-cluster (a15/a7) testchip with and without: CONFIG_CPU_IDLE_MULTIPLE_DRIVERS enabled in the config options. Hence, FWIW, on the entire series: Tested-by: Lorenzo Pieralisi <lorenzo.pieral...@arm.com> > > [1] http://www.spinics.net/lists/linux-acpi/msg37921.html > > Changelog: > > V2: > * fixed sysfs output : /sys/devices/system/cpu/cpu[0-9]/driver/name > * fixed ifdefs in driver.c > * fixed register_driver function loop when unregistering > * removed WARN under spinlock > * fixed changelog for patch [2/4] > * changed cpuidle_get_cpu_driver function parameter > * removed cpuidle_for_each_driver function > * replaced smp_processor_id() by get_cpu/put_cpu > > Daniel Lezcano (4): > cpuidle: move driver's refcount to cpuidle > cpuidle: move driver checking within the lock section > cpuidle: prepare the driver core to be multi drivers aware > cpuidle: support multiple drivers > > drivers/cpuidle/Kconfig | 9 ++ > drivers/cpuidle/cpuidle.c | 36 +++++--- > drivers/cpuidle/cpuidle.h | 4 +- > drivers/cpuidle/driver.c | 209 ++++++++++++++++++++++++++++++++++++++------ > drivers/cpuidle/sysfs.c | 174 ++++++++++++++++++++++++++++++++++++-- > include/linux/cpuidle.h | 8 ++- > 6 files changed, 388 insertions(+), 52 deletions(-) > > -- > 1.7.5.4 > > _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev