Hi Linus, please pull from: git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6.git idle-release This will update the files shown below. thanks! Len Brown Intel Open Source Technology Center ps. individual patches are available on linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx and a consolidated plain patch is available here: http://ftp.kernel.org/pub/linux/kernel/people/lenb/idle/patches/2.6.37/idle-release-2.6.37.diff.gz arch/arm/mach-omap2/cpuidle34xx.c | 2 + arch/ia64/include/asm/processor.h | 5 +- arch/ia64/kernel/process.c | 6 +-- arch/sh/kernel/cpu/shmobile/cpuidle.c | 1 - arch/x86/include/asm/processor.h | 5 +- arch/x86/kernel/process.c | 30 ++++------ arch/x86/kernel/process_32.c | 4 -- arch/x86/kernel/process_64.c | 6 -- drivers/acpi/processor_core.c | 4 +- drivers/acpi/processor_idle.c | 28 ++++------ drivers/cpuidle/cpuidle.c | 92 +++++++++++++++++--------------- drivers/idle/intel_idle.c | 69 ++++++++++++++++++++++--- include/linux/cpuidle.h | 6 -- 13 files changed, 145 insertions(+), 113 deletions(-) through these commits: Len Brown (7): intel_idle: update Sandy Bridge core C-state residency targets ACPI: processor_idle: delete use of NOP CPUIDLE_FLAGs cpuidle: delete NOP CPUIDLE_FLAG_POLL SH, cpuidle: delete use of NOP CPUIDLE_FLAGS_SHALLOW cpuidle: delete unused CPUIDLE_FLAG_SHALLOW, BALANCED, DEEP definitions cpuidle: CPUIDLE_FLAG_TLB_FLUSHED is specific to intel_idle cpuidle: CPUIDLE_FLAG_CHECK_BM is omap3_idle specific Rafael J. Wysocki (1): cpuidle: Make cpuidle_enable_device() call poll_idle_init() Shaohua Li (1): intel_idle: open broadcast clock event Thomas Renninger (3): ACPI, intel_idle: Cleanup idle= internal variables cpuidle: Rename X86 specific idle poll state[0] from C0 to POLL cpuidle/x86/perf: fix power:cpu_idle double end events and throw cpu_idle events from the cpuidle layer with this log: commit 43952886f0b8b3c344c3392b88de067d5fa5419a Merge: 56dbed1 f77cfe4 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 18:06:19 2011 -0500 Merge branch 'cpuidle-perf-events' into idle-test commit 56dbed129df3fdd4caf9018b6e7599ee258a5420 Merge: 2a2d31c f878133 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 18:06:06 2011 -0500 Merge branch 'linus' into idle-test commit f77cfe4ea21760268c0277fa3e4b02dfd2a2c2f4 Author: Thomas Renninger <trenn@xxxxxxx> Date: Fri Jan 7 11:29:44 2011 +0100 cpuidle/x86/perf: fix power:cpu_idle double end events and throw cpu_idle events from the cpuidle layer Currently intel_idle and acpi_idle driver show double cpu_idle "exit idle" events -> this patch fixes it and makes cpu_idle events throwing less complex. It also introduces cpu_idle events for all architectures which use the cpuidle subsystem, namely: - arch/arm/mach-at91/cpuidle.c - arch/arm/mach-davinci/cpuidle.c - arch/arm/mach-kirkwood/cpuidle.c - arch/arm/mach-omap2/cpuidle34xx.c - arch/drivers/acpi/processor_idle.c (for all cases, not only mwait) - arch/x86/kernel/process.c (did throw events before, but was a mess) - drivers/idle/intel_idle.c (did throw events before) Convention should be: Fire cpu_idle events inside the current pm_idle function (not somewhere down the the callee tree) to keep things easy. Current possible pm_idle functions in X86: c1e_idle, poll_idle, cpuidle_idle_call, mwait_idle, default_idle -> this is really easy is now. This affects userspace: The type field of the cpu_idle power event can now direclty get mapped to: /sys/devices/system/cpu/cpuX/cpuidle/stateX/{name,desc,usage,time,...} instead of throwing very CPU/mwait specific values. This change is not visible for the intel_idle driver. For the acpi_idle driver it should only be visible if the vendor misses out C-states in his BIOS. Another (perf timechart) patch reads out cpuidle info of cpu_idle events from: /sys/.../cpuidle/stateX/*, then the cpuidle events are mapped to the correct C-/cpuidle state again, even if e.g. vendors miss out C-states in their BIOS and for example only export C1 and C3. -> everything is fine. Signed-off-by: Thomas Renninger <trenn@xxxxxxx> CC: Robert Schoene <robert.schoene@xxxxxxxxxxxxx> CC: Jean Pihet <j-pihet@xxxxxx> CC: Arjan van de Ven <arjan@xxxxxxxxxxxxxxx> CC: Ingo Molnar <mingo@xxxxxxx> CC: Frederic Weisbecker <fweisbec@xxxxxxxxx> CC: linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx CC: linux-acpi@xxxxxxxxxxxxxxx CC: linux-kernel@xxxxxxxxxxxxxxx CC: linux-perf-users@xxxxxxxxxxxxxxx CC: linux-omap@xxxxxxxxxxxxxxx Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 2a2d31c8dc6f1ebcf5eab1d93a0cb0fb4ed57c7c Author: Shaohua Li <shaohua.li@xxxxxxxxx> Date: Mon Jan 10 09:38:12 2011 +0800 intel_idle: open broadcast clock event Intel_idle driver uses CLOCK_EVT_NOTIFY_BROADCAST_ENTER CLOCK_EVT_NOTIFY_BROADCAST_EXIT for broadcast clock events. The _ENTER/_EXIT doesn't really open broadcast clock events, please see processor_idle.c for an example. In some situation, this will cause boot hang, because some CPUs enters idle but local APIC timer stalls. Reported-and-tested-by: Yan Zheng <zheng.z.yan@xxxxxxxxx> Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx> cc: stable@xxxxxxxxxx Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 5392083748a340f68052c0b83a7ce28b10324972 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:56:15 2011 -0500 cpuidle: CPUIDLE_FLAG_CHECK_BM is omap3_idle specific Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 956d033fb2eb3f8818260cdf01644bf4dc1a9e33 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:51:20 2011 -0500 cpuidle: CPUIDLE_FLAG_TLB_FLUSHED is specific to intel_idle Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 642f11c53f17aee991d97d14e6922172849ef227 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:45:00 2011 -0500 cpuidle: delete unused CPUIDLE_FLAG_SHALLOW, BALANCED, DEEP definitions Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 03d8b083511a7be2c69b750b8a4e412a21189291 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:43:26 2011 -0500 SH, cpuidle: delete use of NOP CPUIDLE_FLAGS_SHALLOW set but not checked. Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit d247632c08c674864d438733280422ddb7130ff8 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:34:59 2011 -0500 cpuidle: delete NOP CPUIDLE_FLAG_POLL it serves no purpose Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 0aae9f923bcc476a8e4725dd3ac37547b9816ee5 Author: Len Brown <len.brown@xxxxxxxxx> Date: Wed Jan 12 02:22:56 2011 -0500 ACPI: processor_idle: delete use of NOP CPUIDLE_FLAGs CPUIDLE_FLAG_SHALLOW CPUIDLE_FLAG_BALANCED CPUIDLE_FLAG_DEEP CPUIDLE_FLAG_CHECK_BM were set by acpi_processor_setup_cpuidle(), but never used by cpuidle or by acpi_idle. So stop setting them. Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit 720f1c3010db6a411358b962a2007969117840bc Author: Thomas Renninger <trenn@xxxxxxx> Date: Fri Jan 7 11:29:43 2011 +0100 cpuidle: Rename X86 specific idle poll state[0] from C0 to POLL C0 means and is well know as "not idle". All documentation out there uses this term as "running"/"not idle" state. Also Linux userspace tools (e.g. cpufreq-aperf and turbostat) show C0 residency which there is correct, but means something totally else than cpuidle "POLL" state. Signed-off-by: Thomas Renninger <trenn@xxxxxxx> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit d18960494f65ca4fa0d67c865aaca99452070d15 Author: Thomas Renninger <trenn@xxxxxxx> Date: Wed Nov 3 17:06:14 2010 +0100 ACPI, intel_idle: Cleanup idle= internal variables Having four variables for the same thing: idle_halt, idle_nomwait, force_mwait and boot_option_idle_overrides is rather confusing and unnecessary complex. if idle= boot param is passed, only set up one variable: boot_option_idle_overrides Introduces following functional changes/fixes: - intel_idle driver does not register if any idle=xy boot param is passed. - processor_idle.c will also not register a cpuidle driver and get active if idle=halt is passed. Before a cpuidle driver with one (C1, halt) state got registered Now the default_idle function will be used which finally uses the same idle call to enter sleep state (safe_halt()), but without registering a whole cpuidle driver. That means idle= param will always avoid cpuidle drivers to register with one exception (same behavior as before): idle=nomwait may still register acpi_idle cpuidle driver, but C1 will not use mwait, but hlt. This can be a workaround for IO based deeper sleep states where C1 mwait causes problems. Signed-off-by: Thomas Renninger <trenn@xxxxxxx> cc: x86@xxxxxxxxxx Signed-off-by: Len Brown <len.brown@xxxxxxxxx> commit d8c216cfa57e8a579f41729cbb88c97835d9ac8d Author: Rafael J. Wysocki <rjw@xxxxxxx> Date: Sat Jan 8 00:29:20 2011 +0100 cpuidle: Make cpuidle_enable_device() call poll_idle_init() The following scenario is possible with the current cpuidle code and the ACPI cpuidle driver: (1) acpi_processor_cst_has_changed() is called, (2) cpuidle_disable_device() is called, (3) cpuidle_remove_state_sysfs() is called to remove the (presumably outdated) states info from sysfs, (3) acpi_processor_get_power_info() is called, the first entry in the pr->power.states[] table is filled with zeros, (4) acpi_processor_setup_cpuidle() is called and it doesn't fill the first entry in pr->power.states[], (5) cpuidle_enable_device() is called, (6) __cpuidle_register_device() is _not_ called, since the device has already been registered, (7) Consequently, poll_idle_init() is _not_ called either, (8) cpuidle_add_state_sysfs() is called to create the sysfs attributes for the new states and it uses the bogus first table entry from acpi_processor_get_power_info() for creating state0. This problem is avoided if cpuidle_enable_device() unconditionally calls poll_idle_init(). Reported-by: Len Brown <len.brown@xxxxxxxxx> Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> cc: stable@xxxxxxxxxx commit ddbd550d503c9cdefcd6674a0ef168d57d3f0917 Author: Len Brown <len.brown@xxxxxxxxx> Date: Mon Dec 13 18:28:22 2010 -0500 intel_idle: update Sandy Bridge core C-state residency targets Signed-off-by: Len Brown <len.brown@xxxxxxxxx> _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm