1. 25 8月, 2011 1 次提交
  2. 04 8月, 2011 3 次提交
  3. 13 1月, 2011 4 次提交
    • T
      cpuidle/x86/perf: fix power:cpu_idle double end events and throw cpu_idle... · f77cfe4e
      Thomas Renninger 提交于
      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: NThomas Renninger <trenn@suse.de>
      CC: Robert Schoene <robert.schoene@tu-dresden.de>
      CC: Jean Pihet <j-pihet@ti.com>
      CC: Arjan van de Ven <arjan@linux.intel.com>
      CC: Ingo Molnar <mingo@elte.hu>
      CC: Frederic Weisbecker <fweisbec@gmail.com>
      CC: linux-pm@lists.linux-foundation.org
      CC: linux-acpi@vger.kernel.org
      CC: linux-kernel@vger.kernel.org
      CC: linux-perf-users@vger.kernel.org
      CC: linux-omap@vger.kernel.org
      Signed-off-by: NLen Brown <len.brown@intel.com>
      f77cfe4e
    • L
      cpuidle: delete NOP CPUIDLE_FLAG_POLL · d247632c
      Len Brown 提交于
      it serves no purpose
      Signed-off-by: NLen Brown <len.brown@intel.com>
      d247632c
    • T
      cpuidle: Rename X86 specific idle poll state[0] from C0 to POLL · 720f1c30
      Thomas Renninger 提交于
      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: NThomas Renninger <trenn@suse.de>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      720f1c30
    • R
      cpuidle: Make cpuidle_enable_device() call poll_idle_init() · d8c216cf
      Rafael J. Wysocki 提交于
      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: NLen Brown <len.brown@intel.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      cc: stable@kernel.org
      d8c216cf
  4. 04 1月, 2011 1 次提交
    • T
      perf: Clean up power events by introducing new, more generic ones · 25e41933
      Thomas Renninger 提交于
      Add these new power trace events:
      
       power:cpu_idle
       power:cpu_frequency
       power:machine_suspend
      
      The old C-state/idle accounting events:
        power:power_start
        power:power_end
      
      Have now a replacement (but we are still keeping the old
      tracepoints for compatibility):
      
        power:cpu_idle
      
      and
        power:power_frequency
      
      is replaced with:
        power:cpu_frequency
      
      power:machine_suspend is newly introduced.
      
      Jean Pihet has a patch integrated into the generic layer
      (kernel/power/suspend.c) which will make use of it.
      
      the type= field got removed from both, it was never
      used and the type is differed by the event type itself.
      
      perf timechart userspace tool gets adjusted in a separate patch.
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NArjan van de Ven <arjan@linux.intel.com>
      Acked-by: NJean Pihet <jean.pihet@newoldbits.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: rjw@sisk.pl
      LKML-Reference: <1294073445-14812-3-git-send-email-trenn@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      LKML-Reference: <1290072314-31155-2-git-send-email-trenn@suse.de>
      25e41933
  5. 17 12月, 2010 1 次提交
    • C
      drivers: Replace __get_cpu_var with __this_cpu_read if not used for an address. · 4a6f4fe8
      Christoph Lameter 提交于
      __get_cpu_var() can be replaced with this_cpu_read and will then use a single
      read instruction with implied address calculation to access the correct per cpu
      instance.
      
      However, the address of a per cpu variable passed to __this_cpu_read() cannot be
      determed (since its an implied address conversion through segment prefixes).
      Therefore apply this only to uses of __get_cpu_var where the addres of the
      variable is not used.
      
      V3->V4:
      	- Move one instance of this_cpu_inc_return to a later patch
      	  so that this one can go in without percpu infrastructrure
      	  changes.
      
      Sedat: fixed compile failure caused by an extra ')'.
      
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Sedat Dilek <sedat.dilek@gmail.com>
      Acked-by: NH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NChristoph Lameter <cl@linux.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      4a6f4fe8
  6. 10 8月, 2010 1 次提交
    • A
      cpuidle: extend cpuidle and menu governor to handle dynamic states · 71abbbf8
      Ai Li 提交于
      On some SoC chips, HW resources may be in use during any particular idle
      period.  As a consequence, the cpuidle states that the SoC is safe to
      enter can change from idle period to idle period.  In addition, the
      latency and threshold of each cpuidle state can vary, depending on the
      operating condition when the CPU becomes idle, e.g.  the current cpu
      frequency, the current state of the HW blocks, etc.
      
      cpuidle core and the menu governor, in the current form, are geared
      towards cpuidle states that are static, i.e.  the availabiltiy of the
      states, their latencies, their thresholds are non-changing during run
      time.  cpuidle does not provide any hook that cpuidle drivers can use to
      adjust those values on the fly for the current idle period before the menu
      governor selects the target cpuidle state.
      
      This patch extends cpuidle core and the menu governor to handle states
      that are dynamic.  There are three additions in the patch and the patch
      maintains backwards-compatibility with existing cpuidle drivers.
      
      1) add prepare() to struct cpuidle_device.  A cpuidle driver can hook
         into the callback and cpuidle will call prepare() before calling the
         governor's select function.  The callback gives the cpuidle driver a
         chance to update the dynamic information of the cpuidle states for the
         current idle period, e.g.  state availability, latencies, thresholds,
         power values, etc.
      
      2) add CPUIDLE_FLAG_IGNORE as one of the state flags.  In the prepare()
         function, a cpuidle driver can set/clear the flag to indicate to the
         menu governor whether a cpuidle state should be ignored, i.e.  not
         available, during the current idle period.
      
      3) add power_specified bit to struct cpuidle_device.  The menu governor
         currently assumes that the cpuidle states are arranged in the order of
         increasing latency, threshold, and power savings.  This is true or can
         be made true for static states.  Once the state parameters are dynamic,
         the latencies, thresholds, and power savings for the cpuidle states can
         increase or decrease by different amounts from idle period to idle
         period.  So the assumption of increasing latency, threshold, and power
         savings from Cn to C(n+1) can no longer be guaranteed.
      
      It can be straightforward to calculate the power consumption of each
      available state and to specify it in power_usage for the idle period.
      Using the power_usage fields, the menu governor then selects the state
      that has the lowest power consumption and that still satisfies all other
      critieria.  The power_specified bit defaults to 0.  For existing cpuidle
      drivers, cpuidle detects that power_specified is 0 and fills in a dummy
      set of power_usage values.
      Signed-off-by: NAi Li <aili@codeaurora.org>
      Cc: Len Brown <len.brown@intel.com>
      Acked-by: NArjan van de Ven <arjan@linux.intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Venkatesh Pallipadi <venki@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      71abbbf8
  7. 04 8月, 2010 1 次提交
    • T
      [CPUFREQ] x86 cpufreq: Make trace_power_frequency cpufreq driver independent · 6f4f2723
      Thomas Renninger 提交于
      and fix the broken case if a core's frequency depends on others.
      
      trace_power_frequency was only implemented in a rather ungeneric way
      in acpi-cpufreq driver's target() function only.
      -> Move the call to trace_power_frequency to
         cpufreq.c:cpufreq_notify_transition() where CPUFREQ_POSTCHANGE
         notifier is triggered.
         This will support power frequency tracing by all cpufreq drivers
      
      trace_power_frequency did not trace frequency changes correctly when
      the userspace governor was used or when CPU cores' frequency depend
      on each other.
      -> Moving this into the CPUFREQ_POSTCHANGE notifier and pass the cpu
         which gets switched automatically fixes this.
      
      Robert Schoene provided some important fixes on top of my initial
      quick shot version which are integrated in this patch:
      - Forgot some changes in power_end trace (TP_printk/variable names)
      - Variable dummy in power_end must now be cpu_id
      - Use static 64 bit variable instead of unsigned int for cpu_id
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      CC: davej@redhat.com
      CC: arjan@infradead.org
      CC: linux-kernel@vger.kernel.org
      CC: robert.schoene@tu-dresden.de
      Tested-by: robert.schoene@tu-dresden.de
      Signed-off-by: NDave Jones <davej@redhat.com>
      6f4f2723
  8. 22 7月, 2010 1 次提交
    • T
      x86 cpufreq, perf: Make trace_power_frequency cpufreq driver independent · 4c21adf2
      Thomas Renninger 提交于
      and fix the broken case if a core's frequency depends on others.
      
      trace_power_frequency was only implemented in a rather ungeneric
      way in acpi-cpufreq driver's target() function only.
      
      -> Move the call to trace_power_frequency to
         cpufreq.c:cpufreq_notify_transition() where CPUFREQ_POSTCHANGE
         notifier is triggered.
         This will support power frequency tracing by all cpufreq
         drivers.
      
      trace_power_frequency did not trace frequency changes correctly
      when the userspace governor was used or when CPU cores'
      frequency depend on each other.
      
      -> Moving this into the CPUFREQ_POSTCHANGE notifier and pass the cpu
         which gets switched automatically fixes this.
      
      Robert Schoene provided some important fixes on top of my
      initial quick shot version which are integrated in this patch:
      - Forgot some changes in power_end trace (TP_printk/variable names)
      - Variable dummy in power_end must now be cpu_id
      - Use static 64 bit variable instead of unsigned int for cpu_id
      
      [akpm@linux-foundation.org: build fix]
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Cc: davej@codemonkey.org.uk
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: Dave Jones <davej@codemonkey.org.uk>
      Acked-by: NArjan van de Ven <arjan@infradead.org>
      Cc: Robert Schoene <robert.schoene@tu-dresden.de>
      Tested-by: NRobert Schoene <robert.schoene@tu-dresden.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      4c21adf2
  9. 28 5月, 2010 1 次提交
    • L
      cpuidle: make cpuidle_curr_driver static · 752138df
      Len Brown 提交于
      cpuidle_register_driver() sets cpuidle_curr_driver
      cpuidle_unregister_driver() clears cpuidle_curr_driver
      
      We should't expose cpuidle_curr_driver to
      potential modification except via these interfaces.
      So make it static and create cpuidle_get_driver() to observe it.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      752138df
  10. 29 10月, 2009 1 次提交
    • K
      cpuidle: always return with interrupts enabled · 246eb7f0
      Kevin Hilman 提交于
      In the case where cpuidle_idle_call() returns before changing state due to
      a need_resched(), it was returning with IRQs disabled.
      
      The idle path assumes that the platform specific idle code returns with
      interrupts enabled (although this too is undocumented AFAICT) and on ARM
      we have a WARN_ON(!(irqs_disabled()) when returning from the idle loop, so
      the user-visible effects were only a warning since interrupts were
      eventually re-enabled later.
      
      On x86, this same problem exists, but there is no WARN_ON() to detect it.
      As on ARM, the interrupts are eventually re-enabled, so I'm not sure of
      any actual bugs triggered by this.  It's primarily a
      correctness/consistency fix.
      
      This patch ensures IRQs are (re)enabled before returning.
      Reported-by: NHemanth V <hemanthv@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
      Tested-by: NMartin Michlmayr <tbm@cyrius.com>
      Cc: <stable@kernel.org>		[2.6.31.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      246eb7f0
  11. 20 9月, 2009 1 次提交
    • A
      tracing, x86, cpuidle: Move the end point of a C state in the power tracer · 288f023e
      Arjan van de Ven 提交于
      The "end of a C state" trace point currently happens before
      the code runs that corrects the TSC for having stopped during idle.
      
      The result of this is that the timestamp of the end-of-C-state event
      is garbage on cpus where the TSC stops during idle.
      
      This patch moves the end point of the C state to after the timekeeping
      engine of the kernel has been corrected.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: fweisbec@gmail.com
      Cc: peterz@infradead.org
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <20090919133533.139c2a46@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      288f023e
  12. 10 11月, 2008 1 次提交
  13. 17 10月, 2008 2 次提交
  14. 11 9月, 2008 1 次提交
    • A
      hrtimer: peek at the timer queue just before going idle · 2e94d1f7
      Arjan van de Ven 提交于
      As part of going idle, we already look at the time of the next timer event to determine
      which C-state to select etc.
      
      This patch adds functionality that causes the timers that are past their
      soft expire time, to fire at this time, before we calculate the next wakeup
      time. This functionality will thus avoid wakeups by running timers before
      going idle rather than specially waking up for it.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      2e94d1f7
  15. 28 7月, 2008 1 次提交
  16. 26 6月, 2008 1 次提交
  17. 12 6月, 2008 1 次提交
    • V
      cpuidle acpi driver: fix oops on AC<->DC · dcb84f33
      Venkatesh Pallipadi 提交于
      cpuidle and acpi driver interaction bug with the way cpuidle_register_driver()
      is called. Due to this bug, there will be oops on
      AC<->DC on some systems, where they support C-states in one DC and not in AC.
      
      The current code does
      ON BOOT:
      	Look at CST and other C-state info to see whether more than C1 is
      	supported. If it is, then acpi processor_idle does a
      	cpuidle_register_driver() call, which internally enables the device.
      
      ON CST change notification (AC<->DC) and on suspend-resume:
      	acpi driver temporarily disables device, updates the device with
      	any new C-states, and reenables the device.
      
      The problem is is on boot, there are no C2, C3 states supported and we skip
      the register. Later on AC<->DC, we may get a CST notification and we try
      to reevaluate CST and enabled the device, without actually registering it.
      This causes breakage as we try to create /sys fs sub directory, without the
      parent directory which is created at register time.
      
      Thanks to Sanjeev for reporting the problem here.
      http://bugzilla.kernel.org/show_bug.cgi?id=10394Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      dcb84f33
  18. 26 3月, 2008 2 次提交
  19. 14 2月, 2008 1 次提交
  20. 09 2月, 2008 1 次提交
    • V
      cpuidle: build fix for non-x86 · a6869cc4
      Venki Pallipadi 提交于
      The last posted version of this patch gave compile error
      on IA64. So, here goes yet another rewrite of the patch.
      
      Convert cpu_idle_wait() to cpuidle_kick_cpus() which is
      SMP-only, and gives error on non supported CPU.
      
      Changes from last patch sent by Kevin:
      Moved the definition of kick_cpus back to cpuidle.c from cpuidle.h:
      * Having it in .h gives #error on archs which includes the header file without
        actually having CPU_IDLE configured. To make it work in .h, we need one more
        #ifdef around that code which makes it messy.
      * Also, the function is only called from one file. So, it can be in declared
        statically in .c rather than making it available to everyone who includes
        the .h file.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NKevin Hilman <khilman@mvista.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      a6869cc4
  21. 07 2月, 2008 2 次提交
  22. 06 2月, 2008 1 次提交
    • M
      pm qos infrastructure and interface · d82b3518
      Mark Gross 提交于
      The following patch is a generalization of the latency.c implementation done
      by Arjan last year.  It provides infrastructure for more than one parameter,
      and exposes a user mode interface for processes to register pm_qos
      expectations of processes.
      
      This interface provides a kernel and user mode interface for registering
      performance expectations by drivers, subsystems and user space applications on
      one of the parameters.
      
      Currently we have {cpu_dma_latency, network_latency, network_throughput} as
      the initial set of pm_qos parameters.
      
      The infrastructure exposes multiple misc device nodes one per implemented
      parameter.  The set of parameters implement is defined by pm_qos_power_init()
      and pm_qos_params.h.  This is done because having the available parameters
      being runtime configurable or changeable from a driver was seen as too easy to
      abuse.
      
      For each parameter a list of performance requirements is maintained along with
      an aggregated target value.  The aggregated target value is updated with
      changes to the requirement list or elements of the list.  Typically the
      aggregated target value is simply the max or min of the requirement values
      held in the parameter list elements.
      
      >From kernel mode the use of this interface is simple:
      
      pm_qos_add_requirement(param_id, name, target_value):
      
        Will insert a named element in the list for that identified PM_QOS
        parameter with the target value.  Upon change to this list the new target is
        recomputed and any registered notifiers are called only if the target value
        is now different.
      
      pm_qos_update_requirement(param_id, name, new_target_value):
      
        Will search the list identified by the param_id for the named list element
        and then update its target value, calling the notification tree if the
        aggregated target is changed.  with that name is already registered.
      
      pm_qos_remove_requirement(param_id, name):
      
        Will search the identified list for the named element and remove it, after
        removal it will update the aggregate target and call the notification tree
        if the target was changed as a result of removing the named requirement.
      
      >From user mode:
      
        Only processes can register a pm_qos requirement.  To provide for
        automatic cleanup for process the interface requires the process to register
        its parameter requirements in the following way:
      
        To register the default pm_qos target for the specific parameter, the
        process must open one of /dev/[cpu_dma_latency, network_latency,
        network_throughput]
      
        As long as the device node is held open that process has a registered
        requirement on the parameter.  The name of the requirement is
        "process_<PID>" derived from the current->pid from within the open system
        call.
      
        To change the requested target value the process needs to write a s32
        value to the open device node.  This translates to a
        pm_qos_update_requirement call.
      
        To remove the user mode request for a target value simply close the device
        node.
      
      [akpm@linux-foundation.org: fix warnings]
      [akpm@linux-foundation.org: fix build]
      [akpm@linux-foundation.org: fix build again]
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: Nmark gross <mgross@linux.intel.com>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Jaroslav Kysela <perex@suse.cz>
      Cc: Takashi Iwai <tiwai@suse.de>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Cc: Adam Belay <abelay@novell.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d82b3518
  23. 01 2月, 2008 1 次提交
  24. 30 10月, 2007 1 次提交
  25. 10 10月, 2007 1 次提交
    • L
      cpuidle: consolidate 2.6.22 cpuidle branch into one patch · 4f86d3a8
      Len Brown 提交于
      commit e5a16b1f9eec0af7cfa0830304b41c1c0833cf9f
      Author: Len Brown <len.brown@intel.com>
      Date:   Tue Oct 2 23:44:44 2007 -0400
      
          cpuidle: shrink diff
      
          processor_idle.c |  440 +++++++++++++++++++++++++++++++++++++++++--
          1 file changed, 429 insertions(+), 11 deletions(-)
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit dfbb9d5aedfb18848a3e0d6f6e3e4969febb209c
      Author: Len Brown <len.brown@intel.com>
      Date:   Wed Sep 26 02:17:55 2007 -0400
      
          cpuidle: reduce diff size
      
          Reduces the cpuidle processor_idle.c diff vs 2.6.22 from this
           processor_idle.c | 2006 ++++++++++++++++++++++++++-----------------
           1 file changed, 1219 insertions(+), 787 deletions(-)
      
          to this:
           processor_idle.c |  502 +++++++++++++++++++++++++++++++++++++++----
           1 file changed, 458 insertions(+), 44 deletions(-)
      
          ...for the purpose of making the cpuilde patch less invasive
          and easier to review.
      
          no functional changes.  build tested only.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 889172fc915f5a7fe20f35b133cbd205ce69bf6c
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Sep 13 13:40:05 2007 -0700
      
          cpuidle: Retain old ACPI policy for !CONFIG_CPU_IDLE
      
          Retain the old policy in processor_idle, so that when CPU_IDLE is not
          configured, old C-state policy will still be used. This provides a
          clean gradual migration path from old ACPI policy to new cpuidle
          based policy.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 9544a8181edc7ecc33b3bfd69271571f98ed08bc
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Sep 13 13:39:17 2007 -0700
      
          cpuidle: Configure governors by default
      
          Quoting Len "Do not give an option to users to shoot themselves in the foot".
      
          Remove the configurability of ladder and menu governors as they are
          needed for default policy of cpuidle. That way users will not be able to
          have cpuidle without any policy loosing all C-state power savings.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 8975059a2c1e56cfe83d1bcf031bcf4cb39be743
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:27:07 2007 -0400
      
          CPUIDLE: load ACPI properly when CPUIDLE is disabled
      
          Change the registration return codes for when CPUIDLE
          support is not compiled into the kernel.  As a result, the ACPI
          processor driver will load properly even if CPUIDLE is unavailable.
          However, it may be possible to cleanup the ACPI processor driver further
          and eliminate some dead code paths.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit e0322e2b58dd1b12ec669bf84693efe0dc2414a8
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:26:06 2007 -0400
      
          CPUIDLE: remove cpuidle_get_bm_activity()
      
          Remove cpuidle_get_bm_activity() and updates governors
          accordingly.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 18a6e770d5c82ba26653e53d240caa617e09e9ab
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:25:58 2007 -0400
      
          CPUIDLE: max_cstate fix
      
          Currently max_cstate is limited to 0, resulting in no idle processor
          power management on ACPI platforms.  This patch restores the value to
          the array size.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 1fdc0887286179b40ce24bcdbde663172e205ef0
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:25:40 2007 -0400
      
          CPUIDLE: handle BM detection inside the ACPI Processor driver
      
          Update the ACPI processor driver to detect BM activity and
          limit state entry depth internally, rather than exposing such
          requirements to CPUIDLE.  As a result, CPUIDLE can drop this
          ACPI-specific interface and become more platform independent.  BM
          activity is now handled much more aggressively than it was in the
          original implementation, so some testing coverage may be needed to
          verify that this doesn't introduce any DMA buffer under-run issues.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 0ef38840db666f48e3cdd2b769da676c57228dd9
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:25:14 2007 -0400
      
          CPUIDLE: menu governor updates
      
          Tweak the menu governor to more effectively handle non-timer
          break events.  Non-timer break events are detected by comparing the
          actual sleep time to the expected sleep time.  In future revisions, it
          may be more reliable to use the timer data structures directly.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit bb4d74fca63fa96cf3ace644b15ae0f12b7df5a1
      Author: Adam Belay <abelay@novell.com>
      Date:   Tue Aug 21 18:24:40 2007 -0400
      
          CPUIDLE: fix 'current_governor' sysfs entry
      
          Allow the "current_governor" sysfs entry to properly handle
          input terminated with '\n'.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit df3c71559bb69b125f1a48971bf0d17f78bbdf47
      Author: Len Brown <len.brown@intel.com>
      Date:   Sun Aug 12 02:00:45 2007 -0400
      
          cpuidle: fix IA64 build (again)
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit a02064579e3f9530fd31baae16b1fc46b5a7bca8
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Sun Aug 12 01:39:27 2007 -0400
      
          cpuidle: Remove support for runtime changing of max_cstate
      
          Remove support for runtime changeability of max_cstate. Drivers can use
          use latency APIs.
      
          max_cstate can still be used as a boot time option and dmi override.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 0912a44b13adf22f5e3f607d263aed23b4910d7e
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Sun Aug 12 01:39:16 2007 -0400
      
          cpuidle: Remove ACPI cstate_limit calls from ipw2100
      
          ipw2100 already has code to use accetable_latency interfaces to limit the
          C-state. Remove the calls to acpi_set_cstate_limit and acpi_get_cstate_limit
          as they are redundant.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit c649a76e76be6bff1fd770d0a775798813a3f6e0
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Sun Aug 12 01:35:39 2007 -0400
      
          cpuidle: compile fix for pause and resume functions
      
          Fix the compilation failure when cpuidle is not compiled in.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Acked-by: NAdam Belay <adam.belay@novell.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 2305a5920fb8ee6ccec1c62ade05aa8351091d71
      Author: Adam Belay <abelay@novell.com>
      Date:   Thu Jul 19 00:49:00 2007 -0400
      
          cpuidle: re-write
      
          Some portions have been rewritten to make the code cleaner and lighter
          weight.  The following is a list of changes:
      
          1.) the state name is now included in the sysfs interface
          2.) detection, hotplug, and available state modifications are handled by
          CPUIDLE drivers directly
          3.) the CPUIDLE idle handler is only ever installed when at least one
          cpuidle_device is enabled and ready
          4.) the menu governor BM code no longer overflows
          5.) the sysfs attributes are now printed as unsigned integers, avoiding
          negative values
          6.) a variety of other small cleanups
      
          Also, Idle drivers are no longer swappable during runtime through the
          CPUIDLE sysfs inteface.  On i386 and x86_64 most idle handlers (e.g.
          poll, mwait, halt, etc.) don't benefit from an infrastructure that
          supports multiple states, so I think using a more general case idle
          handler selection mechanism would be cleaner.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Acked-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Acked-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit df25b6b56955714e6e24b574d88d1fd11f0c3ee5
      Author: Len Brown <len.brown@intel.com>
      Date:   Tue Jul 24 17:08:21 2007 -0400
      
          cpuidle: fix IA64 buid
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit fd6ada4c14488755ff7068860078c437431fbccd
      Author: Adrian Bunk <bunk@stusta.de>
      Date:   Mon Jul 9 11:33:13 2007 -0700
      
          cpuidle: static
      
          make cpuidle_replace_governor() static
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
          Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit c1d4a2cebcadf2429c0c72e1d29aa2a9684c32e0
      Author: Adrian Bunk <bunk@stusta.de>
      Date:   Tue Jul 3 00:54:40 2007 -0400
      
          cpuidle: static
      
          This patch makes the needlessly global struct menu_governor static.
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit dbf8780c6e8d572c2c273da97ed1cca7608fd999
      Author: Andrew Morton <akpm@linux-foundation.org>
      Date:   Tue Jul 3 00:49:14 2007 -0400
      
          export symbol tick_nohz_get_sleep_length
      
          ERROR: "tick_nohz_get_sleep_length" [drivers/cpuidle/governors/menu.ko] undefined!
          ERROR: "tick_nohz_get_idle_jiffies" [drivers/cpuidle/governors/menu.ko] undefined!
      
          And please be sure to get your changes to core kernel suitably reviewed.
      
          Cc: Adam Belay <abelay@novell.com>
          Cc: Venki Pallipadi <venkatesh.pallipadi@intel.com>
          Cc: Ingo Molnar <mingo@elte.hu>
          Cc: Thomas Gleixner <tglx@linutronix.de>
          Cc: john stultz <johnstul@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 29f0e248e7017be15f99febf9143a2cef00b2961
      Author: Andrew Morton <akpm@linux-foundation.org>
      Date:   Tue Jul 3 00:43:04 2007 -0400
      
          tick.h needs hrtimer.h
      
          It uses hrtimers.
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit e40cede7d63a029e92712a3fe02faee60cc38fb4
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:40:34 2007 -0400
      
          cpuidle: first round of documentation updates
      
          Documentation changes based on Pavel's feedback.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 83b42be2efece386976507555c29e7773a0dfcd1
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:39:25 2007 -0400
      
          cpuidle: add rating to the governors and pick the one with highest rating by default
      
          Introduce a governor rating scheme to pick the right governor by default.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit d2a74b8c5e8f22def4709330d4bfc4a29209b71c
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:38:08 2007 -0400
      
          cpuidle: make cpuidle sysfs driver governor switch off by default
      
          Make default cpuidle sysfs to show current_governor and current_driver in
          read-only mode.  More elaborate available_governors and available_drivers with
          writeable current_governor and current_driver interface only appear with
          "cpuidle_sysfs_switch" boot parameter.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 1f60a0e80bf83cf6b55c8845bbe5596ed8f6307b
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:37:00 2007 -0400
      
          cpuidle: menu governor: change the early break condition
      
          Change the C-state early break out algorithm in menu governor.
      
          We only look at early breakouts that result in wakeups shorter than idle
          state's target_residency.  If such a breakout is frequent enough, eliminate
          the particular idle state upto a timeout period.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 45a42095cf64b003b4a69be3ce7f434f97d7af51
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:35:38 2007 -0400
      
          cpuidle: fix uninitialized variable in sysfs routine
      
          Fix the uninitialized usage of ret.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 80dca7cdba3e6ee13eae277660873ab9584eb3be
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:34:16 2007 -0400
      
          cpuidle: reenable /proc/acpi//power interface for the time being
      
          Keep /proc/acpi/processor/CPU*/power around for a while as powertop depends
          on it. It will be marked deprecated and removed in future. powertop can use
          cpuidle interfaces instead.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 589c37c2646c5e3813a51255a5ee1159cb4c33fc
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Jul 3 00:32:37 2007 -0400
      
          cpuidle: menu governor and hrtimer compile fix
      
          Compile fix for menu governor.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 0ba80bd9ab3ed304cb4f19b722e4cc6740588b5e
      Author: Len Brown <len.brown@intel.com>
      Date:   Thu May 31 22:51:43 2007 -0400
      
          cpuidle: build fix - cpuidle vs ipw2100 module
      
          ERROR: "acpi_set_cstate_limit" [drivers/net/wireless/ipw2100.ko] undefined!
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit d7d8fa7f96a7f7682be7c6cc0cc53fa7a18c3b58
      Author: Adam Belay <abelay@novell.com>
      Date:   Sat Mar 24 03:47:07 2007 -0400
      
          cpuidle: add the 'menu' governor
      
          Here is my first take at implementing an idle PM governor that takes
          full advantage of NO_HZ.  I call it the 'menu' governor because it
          considers the full list of idle states before each entry.
      
          I've kept the implementation fairly simple.  It attempts to guess the
          next residency time and then chooses a state that would meet at least
          the break-even point between power savings and entry cost.  To this end,
          it selects the deepest idle state that satisfies the following
          constraints:
               1. If the idle time elapsed since bus master activity was detected
                  is below a threshold (currently 20 ms), then limit the selection
                  to C2-type or above.
               2. Do not choose a state with a break-even residency that exceeds
                  the expected time remaining until the next timer interrupt.
               3. Do not choose a state with a break-even residency that exceeds
                  the elapsed time between the last pair of break events,
                  excluding timer interrupts.
      
          This governor has an advantage over "ladder" governor because it
          proactively checks how much time remains until the next timer interrupt
          using the tick infrastructure.  Also, it handles device interrupt
          activity more intelligently by not including timer interrupts in break
          event calculations.  Finally, it doesn't make policy decisions using the
          number of state entries, which can have variable residency times (NO_HZ
          makes these potentially very large), and instead only considers sleep
          time deltas.
      
          The menu governor can be selected during runtime using the cpuidle sysfs
          interface like so:
          "echo "menu" > /sys/devices/system/cpu/cpuidle/current_governor"
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit a4bec7e65aa3b7488b879d971651cc99a6c410fe
      Author: Adam Belay <abelay@novell.com>
      Date:   Sat Mar 24 03:47:03 2007 -0400
      
          cpuidle: export time until next timer interrupt using NO_HZ
      
          Expose information about the time remaining until the next
          timer interrupt expires by utilizing the dynticks infrastructure.
          Also modify the main idle loop to allow dynticks to handle
          non-interrupt break events (e.g. DMA).  Finally, expose sleep ticks
          information to external code.  Thomas Gleixner is responsible for much
          of the code in this patch.  However, I've made some additional changes,
          so I'm probably responsible if there are any bugs or oversights :)
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 2929d8996fbc77f41a5ff86bb67cdde3ca7d2d72
      Author: Adam Belay <abelay@novell.com>
      Date:   Sat Mar 24 03:46:58 2007 -0400
      
          cpuidle: governor API changes
      
          This patch prepares cpuidle for the menu governor.  It adds an optional
          stage after idle state entry to give the governor an opportunity to
          check why the state was exited.  Also it makes sure the idle loop
          returns after each state entry, allowing the appropriate dynticks code
          to run.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 3a7fd42f9825c3b03e364ca59baa751bb350775f
      Author: Venki Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Apr 26 00:03:59 2007 -0700
      
          cpuidle: hang fix
      
          Prevent hang on x86-64, when ACPI processor driver is added as a module on
          a system that does not support C-states.
      
          x86-64 expects all idle handlers to enable interrupts before returning from
          idle handler.  This is due to enter_idle(), exit_idle() races.  Make
          cpuidle_idle_call() confirm to this when there is no pm_idle_old.
      
          Also, cpuidle look at the return values of attch_driver() and set
          current_driver to NULL if attach fails on all CPUs.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 4893339a142afbd5b7c01ffadfd53d14746e858e
      Author: Shaohua Li <shaohua.li@intel.com>
      Date:   Thu Apr 26 10:40:09 2007 +0800
      
          cpuidle: add support for max_cstate limit
      
          With CPUIDLE framework, the max_cstate (to limit max cpu c-state)
          parameter is ingored. Some systems require it to ignore C2/C3
          and some drivers like ipw require it too.
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 43bbbbe1cb998cbd2df656f55bb3bfe30f30e7d1
      Author: Shaohua Li <shaohua.li@intel.com>
      Date:   Thu Apr 26 10:40:13 2007 +0800
      
          cpuidle: add cpuidle_fore_redetect_devices API
      
          add cpuidle_force_redetect_devices API,
          which forces all CPU redetect idle states.
          Next patch will use it.
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit d1edadd608f24836def5ec483d2edccfb37b1d19
      Author: Shaohua Li <shaohua.li@intel.com>
      Date:   Thu Apr 26 10:40:01 2007 +0800
      
          cpuidle: fix sysfs related issue
      
          Fix the cpuidle sysfs issue.
          a. make kobject dynamicaly allocated
          b. fixed sysfs init issue to avoid suspend/resume issue
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 7169a5cc0d67b263978859672e86c13c23a5570d
      Author: Randy Dunlap <randy.dunlap@oracle.com>
      Date:   Wed Mar 28 22:52:53 2007 -0400
      
          cpuidle: 1-bit field must be unsigned
      
          A 1-bit bitfield has no room for a sign bit.
          drivers/cpuidle/governors/ladder.c:54:16: error: dubious bitfield without explicit `signed' or `unsigned'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
          Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 4658620158dc2fbd9e4bcb213c5b6fb5d05ba7d4
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Wed Mar 28 22:52:41 2007 -0400
      
          cpuidle: fix boot hang
      
          Patch for cpuidle boot hang reported by Larry Finger here.
          http://www.ussg.iu.edu/hypermail/linux/kernel/0703.2/2025.htmlSigned-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
          Cc: Larry Finger <larry.finger@lwfinger.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit c17e168aa6e5fe3851baaae8df2fbc1cf11443a9
      Author: Len Brown <len.brown@intel.com>
      Date:   Wed Mar 7 04:37:53 2007 -0500
      
          cpuidle: ladder does not depend on ACPI
      
          build fix for CONFIG_ACPI=n
      
          In file included from drivers/cpuidle/governors/ladder.c:21:
          include/acpi/processor.h:88: error: expected specifier-qualifier-list before ‘acpi_integer’
          include/acpi/processor.h:106: error: expected specifier-qualifier-list before ‘acpi_integer’
          include/acpi/processor.h:168: error: expected specifier-qualifier-list before ‘acpi_handle’
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 8c91d958246bde68db0c3f0c57b535962ce861cb
      Author: Adrian Bunk <bunk@stusta.de>
      Date:   Tue Mar 6 02:29:40 2007 -0800
      
          cpuidle: make code static
      
          This patch makes the following needlessly global code static:
          - driver.c: __cpuidle_find_driver()
          - governor.c: __cpuidle_find_governor()
          - ladder.c: struct ladder_governor
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
          Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
          Cc: Adam Belay <abelay@novell.com>
          Cc: Shaohua Li <shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 0c39dc3187094c72c33ab65a64d2017b21f372d2
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Wed Mar 7 02:38:22 2007 -0500
      
          cpu_idle: fix build break
      
          This patch fixes a build breakage with !CONFIG_HOTPLUG_CPU and
          CONFIG_CPU_IDLE.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 8112e3b115659b07df340ef170515799c0105f82
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Tue Mar 6 02:29:39 2007 -0800
      
          cpuidle: build fix for !CPU_IDLE
      
          Fix the compile issues when CPU_IDLE is not configured.
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
          Cc: Adam Belay <abelay@novell.com>
          Cc: Shaohua Li <shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 1eb4431e9599cd25e0d9872f3c2c8986821839dd
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Feb 22 13:54:57 2007 -0800
      
          cpuidle take2: Basic documentation for cpuidle
      
          Documentation for cpuidle infrastructure
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit ef5f15a8b79123a047285ec2e3899108661df779
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Feb 22 13:54:03 2007 -0800
      
          cpuidle take2: Hookup ACPI C-states driver with cpuidle
      
          Hookup ACPI C-states onto generic cpuidle infrastructure.
      
          drivers/acpi/procesor_idle.c is now a ACPI C-states driver that registers as
          a driver in cpuidle infrastructure and the policy part is removed from
          drivers/acpi/processor_idle.c. We use governor in cpuidle instead.
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      
      commit 987196fa82d4db52c407e8c9d5dec884ba602183
      Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Date:   Thu Feb 22 13:52:57 2007 -0800
      
          cpuidle take2: Core cpuidle infrastructure
      
          Announcing 'cpuidle', a new CPU power management infrastructure to manage
          idle CPUs in a clean and efficient manner.
          cpuidle separates out the drivers that can provide support for multiple types
          of idle states and policy governors that decide on what idle state to use
          at run time.
          A cpuidle driver can support multiple idle states based on parameters like
          varying power consumption, wakeup latency, etc (ACPI C-states for example).
          A cpuidle governor can be usage model specific (laptop, server,
          laptop on battery etc).
          Main advantage of the infrastructure being, it allows independent development
          of drivers and governors and allows for better CPU power management.
      
          A huge thanks to Adam Belay and Shaohua Li who were part of this mini-project
          since its beginning and are greatly responsible for this patchset.
      
          This patch:
      
          Core cpuidle infrastructure.
          Introduces a new abstraction layer for cpuidle:
          * which manages drivers that can support multiple idles states. Drivers
            can be generic or particular to specific hardware/platform
          * allows pluging in multiple policy governors that can take idle state policy
            decision
          * The core also has a set of sysfs interfaces with which administrato can know
            about supported drivers and governors and switch them at run time.
      Signed-off-by: NAdam Belay <abelay@novell.com>
      Signed-off-by: NShaohua Li <shaohua.li@intel.com>
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      4f86d3a8