03 Sep, 2008

1 commit


15 Aug, 2008

1 commit


22 Jul, 2008

1 commit


17 Jul, 2008

5 commits

  • If a system matches in this DMI table,
    Linux will disable MWAIT support for idle.
    ie. "idle=nomwait" is automatically invoked
    and C1_FFH and C2C3_FFH access mode are disabled.

    http://bugzilla.kernel.org/show_bug.cgi?id=10807
    http://bugzilla.kernel.org/show_bug.cgi?id=10914

    Signed-off-by: Zhao Yakui
    Signed-off-by: Li Shaohua
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Zhao Yakui
     
  • "idle=nomwait" disables the use of the MWAIT
    instruction from both C1 (C1_FFH) and deeper (C2C3_FFH)
    C-states.

    When MWAIT is unavailable, the BIOS and OS generally
    negotiate to use the HALT instruction for C1,
    and use IO accesses for deeper C-states.

    This option is useful for power and performance
    comparisons, and also to work around BIOS bugs
    where broken MWAIT support is advertised.

    http://bugzilla.kernel.org/show_bug.cgi?id=10807
    http://bugzilla.kernel.org/show_bug.cgi?id=10914

    Signed-off-by: Zhao Yakui
    Signed-off-by: Li Shaohua
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Zhao Yakui
     
  • Change processors from an array sized by NR_CPUS to a per_cpu variable.

    Signed-off-by: Mike Travis
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Mike Travis
     
  • Sys I/F under acpi device node and sysdev device node are both
    needed for cpu hot-removal. User space need this link so that
    they know they are poking the sys I/F for the same cpu.
    http://bugzilla.kernel.org/show_bug.cgi?id=9772

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Zhang Rui
     
  • The ACPI device node for the cpu has already been unregistered
    when acpi_processor_handle_eject is called.
    Thus we should offline the cpu and continue, rather than a failure here.
    http://bugzilla.kernel.org/show_bug.cgi?id=9772

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown
    Signed-off-by: Andi Kleen

    Zhang Rui
     

12 Jun, 2008

1 commit


01 May, 2008

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (179 commits)
    ACPI: Fix acpi_processor_idle and idle= boot parameters interaction
    acpi: fix section mismatch warning in pnpacpi
    intel_menlo: fix build warning
    ACPI: Cleanup: Remove unneeded, multiple local dummy variables
    ACPI: video - fix permissions on some proc entries
    ACPI: video - properly handle errors when registering proc elements
    ACPI: video - do not store invalid entries in attached_array list
    ACPI: re-name acpi_pm_ops to acpi_suspend_ops
    ACER_WMI/ASUS_LAPTOP: fix build bug
    thinkpad_acpi: fix possible NULL pointer dereference if kstrdup failed
    ACPI: check a return value correctly in acpi_power_get_context()
    #if 0 acpi/bay.c:eject_removable_drive()
    eeepc-laptop: add hwmon fan control
    eeepc-laptop: add backlight
    eeepc-laptop: add base driver
    ACPI: thinkpad-acpi: bump up version to 0.20
    ACPI: thinkpad-acpi: fix selects in Kconfig
    ACPI: thinkpad-acpi: use a private workqueue
    ACPI: thinkpad-acpi: fluff really minor fix
    ACPI: thinkpad-acpi: use uppercase for "LED" on user documentation
    ...

    Fixed conflicts in drivers/acpi/video.c and drivers/misc/intel_menlow.c
    manually.

    Linus Torvalds
     

30 Apr, 2008

1 commit

  • Legacy HP ia64 platforms currently cannot provide
    /proc/cpuinfo/physical_id due to legacy SAL/PAL implementations.
    However, that physical topology information can be obtained
    via ACPI.

    Provide an interface that gives ACPI one last chance to provide
    physical_id for these legacy platforms. This logic only comes
    into play iff:

    - ACPI actually provides slot information for the CPU
    - we lack a valid socket_id

    Otherwise, we don't do anything.

    Since x86 uses the ACPI processor driver as well, we provide a nop
    stub function for arch_fix_phys_package_id() in asm-x86/topology.h

    Signed-off-by: Alex Chiang
    Signed-off-by: Tony Luck

    Alex Chiang
     

29 Apr, 2008

2 commits

  • Use proc_create()/proc_create_data() to make sure that ->proc_fops and ->data
    be setup before gluing PDE to main tree.

    Add correct ->owner to proc_fops to fix reading/module unloading race.

    Signed-off-by: Denis V. Lunev
    Cc: Len Brown
    Cc: Alexey Dobriyan
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Denis V. Lunev
     
  • thermal_cooling_device_register used to return NULL if THERMAL is "n".
    As the ACPI fan, processor and video drivers SELECT the generic
    thermal in PATCH 01, this is not a problem any more.

    Signed-off-by: Julia Lawall
    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Julia Lawall
     

09 Apr, 2008

1 commit

  • Fixes a BUG in ACPI hotplugging.

    processor_device_array[pr->id] needs to be set to NULL when removing a CPU.
    Else the "buggy BIOS check" in acpi_processor_start mistakenly fires when a
    CPU is removed from the system and then later re-added.

    Signed-off-by: Alok N Kataria
    Signed-off-by: Dan Arai
    Cc: Len Brown
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alok Kataria
     

29 Mar, 2008

1 commit

  • Revert commit 1192aeb957402b45f311895f124e4ca41206843c ("ACPI:
    drivers/acpi: elide a non-zero test on a result that is never 0")
    because it turns out that thermal_cooling_device_register() does
    actually return NULL if CONFIG_THERMAL is turned off (then the routine
    turns into a dummy inline routine in the header files that returns NULL
    unconditionally).

    This was found with randconfig testing, causing a crash during bootup:

    initcall 0x78878534 ran for 13 msecs: acpi_button_init+0x0/0x51()
    Calling initcall 0x78878585: acpi_fan_init+0x0/0x2c()
    BUG: unable to handle kernel NULL pointer dereference at 00000000
    IP: [] acpi_fan_add+0x7d/0xfd
    *pde = 00000000
    Oops: 0000 [#1]
    Modules linked in:

    Pid: 1, comm: swapper Not tainted (2.6.25-rc7-sched-devel.git-x86-latest.git #14)
    EIP: 0060:[] EFLAGS: 00010246 CPU: 0
    EIP is at acpi_fan_add+0x7d/0xfd
    EAX: b787c718 EBX: b787c400 ECX: b782ceb4 EDX: 00000007
    ESI: 00000000 EDI: b787c6f4 EBP: b782cee0 ESP: b782cecc
    DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
    Process swapper (pid: 1, ti=b782c000 task=b7846000 task.ti=b782c000)
    Stack: b787c459 00000000 b787c400 78790888 b787c60c b782cef8 782b6fb8 ffffffda
    b787c60c 00000000 78790958 b782cf0c 783005d7 b787c60c 78790958 78790584
    b782cf1c 783007f6 b782cf28 00000000 b782cf40 782ffc4a 78790958 b794d558
    Call Trace:
    [] ? acpi_device_probe+0x3e/0xdb
    [] ? driver_probe_device+0x82/0xfc
    [] ? __driver_attach+0x3a/0x70
    [] ? bus_for_each_dev+0x3e/0x60
    [] ? driver_attach+0x14/0x16
    [] ? __driver_attach+0x0/0x70
    [] ? bus_add_driver+0x9d/0x1b0
    [] ? driver_register+0x47/0xa3
    [] ? timespec_to_ktime+0x9/0xc
    [] ? acpi_bus_register_driver+0x3a/0x3c
    [] ? acpi_fan_init+0xd/0x2c
    [] ? kernel_init+0xac/0x1f9
    [] ? kernel_init+0x0/0x1f9
    [] ? kernel_thread_helper+0x7/0x10
    =======================
    Code: 6e 78 e8 57 44 e7 ff 58 e9 93 00 00 00 8b 55 f0 8d bb f4 02 00 00 80 4b 2d 10 8b 03 e8 87 cb ff ff 8d 83 18 03 00 00 80 63 2d ef 35 00 00 00 00 50 68 e8 9c 6e 78 e8 22 44 e7 ff b9 b6 9c 6e
    EIP: [] acpi_fan_add+0x7d/0xfd SS:ESP 0068:b782cecc
    ---[ end trace 778e504de7e3b1e3 ]---
    Kernel panic - not syncing: Attempted to kill init!

    Signed-off-by: Ingo Molnar
    Acked-by: Julia Lawall
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

27 Mar, 2008

1 commit

  • The function thermal_cooling_device_register always returns either a valid
    pointer or a value made with ERR_PTR, so a test for non-zero on the result
    will always succeed.

    The problem was found using the following semantic match.
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @a@
    expression E, E1;
    statement S,S1;
    position p;
    @@

    E = thermal_cooling_device_register(...)
    ... when != E = E1
    if@p (E) S else S1

    @n@
    position a.p;
    expression E,E1;
    statement S,S1;
    @@

    E = NULL
    ... when != E = E1
    if@p (E) S else S1

    @depends on !n@
    expression E;
    statement S,S1;
    position a.p;
    @@

    * if@p (E)
    S else S1
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Julia Lawall
     

13 Mar, 2008

1 commit


12 Mar, 2008

1 commit


23 Feb, 2008

1 commit

  • update cfaf3747ff3d431fba33f75083b7f50f58ae22ff
    ACPI: ACPI Exception (): AE_NOT_FOUND, Processor Device is not present

    is_processor_present is only called in the processor hotplug case,
    and _STA method is mandatory at this time.

    We should ignore those processors that are disabled in the MADT
    and don't have _STA methods.
    Because they will never exist in this system.
    For the processors that don't physically exist but can be
    hot plugged later, we still need this debug info.

    http://bugzilla.kernel.org/show_bug.cgi?id=8570

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

21 Feb, 2008

2 commits


16 Feb, 2008

3 commits


07 Feb, 2008

2 commits


02 Feb, 2008

2 commits

  • Accordint to ACPI spec, the _TSD object provides T-state control cross
    logical processor dependency information to OSPM.
    After the _TSD data for all cpus are obtained, OSPM will set up
    the T-state coordination between CPUs.

    Of course if the _TSD doesn't exist or _TSD data is incorrect , it is
    assumed that there is no T-state coordination and T-state is changed
    independently.

    Now there is no proper solution to update T-state coordination after
    one cpu is hotplugged. So this patch won't support hotplugged cpu very well.

    Signed-off-by: Zhao Yakui
    Signed-off-by: Len Brown

    Zhao Yakui
     
  • Register ACPI processor as thermal cooling devices.
    A combination of processor T-state and P-state are used for thermal throttling.
    the processor will reduce the frequency first and then set the T-state.

    we use cpufreq_thermal_reduction_pctg to calculate the cpufreq limit,
    and call cpufreq_verify_with_limit to set the cpufreq limit.
    if cpufreq driver is loaded, then we have four cooling state for cpufreq control.
    cooling state 0: cpufreq limit == max_freq
    cooling state 1: cpufreq limit == max_freq * 80%
    cooling state 2: cpufreq limit == max_freq * 60%
    cooling state 3: cpufreq limit == max_freq * 40%

    after the cpufreq limit is set to 40 percentage of the max_freq,
    we use T-state for cooling.

    eg. a processor has P-state support, and it has 8 T-state (T0-T7),
    the max_state of the proceesor is 10:

    state cpufreq-limit T-state
    0: max_freq T0
    1: max_freq * 80% T0
    2: max_freq * 60% T0
    3: max_freq * 40% T0
    4: max_freq * 40% T1
    5: max_freq * 40% T2
    6: max_freq * 40% T3
    7: max_freq * 40% T4
    8: max_freq * 40% T5
    9: max_freq * 40% T6
    10: max_freq * 40% T7

    Signed-off-by: Zhang Rui
    Signed-off-by: Zhao Yakui
    Signed-off-by: Thomas Sujith
    Signed-off-by: Len Brown

    Zhang Rui
     

09 Jan, 2008

1 commit

  • ACPI Exception (acpi_processor-0677): AE_NOT_FOUND, Processor Device is not
    present [20060707]

    According to the ACPI spec 6.3.7,
    "If a device object (including the processor object) does not have an
    _STA object, then OSPM assumes that all of the above bits are set,
    (in other words, the device is present, enabled, shown in the UI
    and funtioning)".

    is_processor_present shoud return 1 if the processor device object exists
    while it doesn't have an _STA object.

    http://bugzilla.kernel.org/show_bug.cgi?id=8570

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

30 Nov, 2007

1 commit

  • ACPI uses NR_CPUS in various loops and in some it accesses per cpu data of
    processors that are not present(!) and that will never be present.

    The pointers to per cpu data are typically not initialized for processors
    that are not present. So we seem to be reading something here from offset
    0 in memory.

    Make ACPI use nr_cpu_ids instead. That stops at the end of the possible
    processors.

    Convert one loop to NR_CPUS to use the cpu_possible map instead. That way
    ranges of processor that can never be brought online are skipped during the
    loop.

    Signed-off-by: Christoph Lameter
    Cc: Len Brown
    Acked-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

21 Nov, 2007

2 commits


20 Nov, 2007

2 commits


17 Nov, 2007

1 commit


20 Oct, 2007

2 commits

  • * ssh://master.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-x86: (33 commits)
    x86: convert cpuinfo_x86 array to a per_cpu array
    x86: introduce frame_pointer() and stack_pointer()
    x86 & generic: change to __builtin_prefetch()
    i386: do not BUG_ON() when MSR is unknown
    x86: acpi use cpu_physical_id
    x86: convert cpu_llc_id to be a per cpu variable
    x86: convert cpu_to_apicid to be a per cpu variable
    i386: introduce "used_vectors" bitmap which can be used to reserve vectors.
    x86: use raw locks during oopses
    x86: honor _PAGE_PSE bit on page walks
    i386: do cpuid_device_create() in CPU_UP_PREPARE instead of CPU_ONLINE.
    x86: implement missing x86_64 function smp_call_function_mask()
    x86: use descriptor's functions instead of inline assembly
    i386: consolidate show_regs and show_registers for i386
    i386: make callgraph use dump_trace() on i386/x86_64
    x86: enable iommu_merge by default
    i386: i386 add AMD64 Barcelona PMU MSR definitions to msr.h
    x86: Unify i386 and x86-64 early quirks
    x86: enable HPET on ICH3 and ICH4
    x86: force enable HPET on VT8235/8237 chipsets
    ...

    Manually fix trivial conflict with task pid container helper changes in
    arch/x86/kernel/process_32.c

    Linus Torvalds
     
  • This is from an earlier message from Christoph Lameter:

    processor_core.c currently tries to determine the apicid by special casing
    for IA64 and x86. The desired information is readily available via

    cpu_physical_id()

    on IA64, i386 and x86_64.

    Signed-off-by: Christoph Lameter

    Additionally, boot_cpu_id needed to be exported to fix compile errors in
    dma code when !CONFIG_SMP.

    Signed-off-by: Mike Travis
    Cc: Andi Kleen
    Cc: Christoph Lameter
    Cc: "Siddha, Suresh B"
    Cc: Len Brown
    Signed-off-by: Andrew Morton

    Mike Travis
     

10 Oct, 2007

1 commit

  • commit e5a16b1f9eec0af7cfa0830304b41c1c0833cf9f
    Author: Len Brown
    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: Len Brown

    commit dfbb9d5aedfb18848a3e0d6f6e3e4969febb209c
    Author: Len Brown
    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: Len Brown

    commit 889172fc915f5a7fe20f35b133cbd205ce69bf6c
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 9544a8181edc7ecc33b3bfd69271571f98ed08bc
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 8975059a2c1e56cfe83d1bcf031bcf4cb39be743
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit e0322e2b58dd1b12ec669bf84693efe0dc2414a8
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 18a6e770d5c82ba26653e53d240caa617e09e9ab
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 1fdc0887286179b40ce24bcdbde663172e205ef0
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 0ef38840db666f48e3cdd2b769da676c57228dd9
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit bb4d74fca63fa96cf3ace644b15ae0f12b7df5a1
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit df3c71559bb69b125f1a48971bf0d17f78bbdf47
    Author: Len Brown
    Date: Sun Aug 12 02:00:45 2007 -0400

    cpuidle: fix IA64 build (again)

    Signed-off-by: Len Brown

    commit a02064579e3f9530fd31baae16b1fc46b5a7bca8
    Author: Venkatesh Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit 0912a44b13adf22f5e3f607d263aed23b4910d7e
    Author: Venkatesh Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    commit c649a76e76be6bff1fd770d0a775798813a3f6e0
    Author: Venkatesh Pallipadi
    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: Venkatesh Pallipadi
    Acked-by: Adam Belay
    Signed-off-by: Len Brown

    commit 2305a5920fb8ee6ccec1c62ade05aa8351091d71
    Author: Adam Belay
    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: Adam Belay
    Acked-by: Venkatesh Pallipadi
    Acked-by: Shaohua Li
    Signed-off-by: Len Brown

    commit df25b6b56955714e6e24b574d88d1fd11f0c3ee5
    Author: Len Brown
    Date: Tue Jul 24 17:08:21 2007 -0400

    cpuidle: fix IA64 buid

    Signed-off-by: Len Brown

    commit fd6ada4c14488755ff7068860078c437431fbccd
    Author: Adrian Bunk
    Date: Mon Jul 9 11:33:13 2007 -0700

    cpuidle: static

    make cpuidle_replace_governor() static

    Signed-off-by: Adrian Bunk
    Cc: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit c1d4a2cebcadf2429c0c72e1d29aa2a9684c32e0
    Author: Adrian Bunk
    Date: Tue Jul 3 00:54:40 2007 -0400

    cpuidle: static

    This patch makes the needlessly global struct menu_governor static.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit dbf8780c6e8d572c2c273da97ed1cca7608fd999
    Author: Andrew Morton
    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
    Cc: Venki Pallipadi
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: john stultz
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 29f0e248e7017be15f99febf9143a2cef00b2961
    Author: Andrew Morton
    Date: Tue Jul 3 00:43:04 2007 -0400

    tick.h needs hrtimer.h

    It uses hrtimers.

    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit e40cede7d63a029e92712a3fe02faee60cc38fb4
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 83b42be2efece386976507555c29e7773a0dfcd1
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit d2a74b8c5e8f22def4709330d4bfc4a29209b71c
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 1f60a0e80bf83cf6b55c8845bbe5596ed8f6307b
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 45a42095cf64b003b4a69be3ce7f434f97d7af51
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 80dca7cdba3e6ee13eae277660873ab9584eb3be
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 589c37c2646c5e3813a51255a5ee1159cb4c33fc
    Author: Venki Pallipadi
    Date: Tue Jul 3 00:32:37 2007 -0400

    cpuidle: menu governor and hrtimer compile fix

    Compile fix for menu governor.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 0ba80bd9ab3ed304cb4f19b722e4cc6740588b5e
    Author: Len Brown
    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: Len Brown

    commit d7d8fa7f96a7f7682be7c6cc0cc53fa7a18c3b58
    Author: Adam Belay
    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: Adam Belay
    Signed-off-by: Len Brown

    commit a4bec7e65aa3b7488b879d971651cc99a6c410fe
    Author: Adam Belay
    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: Adam Belay
    Signed-off-by: Len Brown

    commit 2929d8996fbc77f41a5ff86bb67cdde3ca7d2d72
    Author: Adam Belay
    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: Adam Belay
    Signed-off-by: Len Brown

    commit 3a7fd42f9825c3b03e364ca59baa751bb350775f
    Author: Venki Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 4893339a142afbd5b7c01ffadfd53d14746e858e
    Author: Shaohua Li
    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: Shaohua Li
    Signed-off-by: Len Brown

    commit 43bbbbe1cb998cbd2df656f55bb3bfe30f30e7d1
    Author: Shaohua Li
    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: Shaohua Li
    Signed-off-by: Len Brown

    commit d1edadd608f24836def5ec483d2edccfb37b1d19
    Author: Shaohua Li
    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: Shaohua Li
    Signed-off-by: Len Brown

    commit 7169a5cc0d67b263978859672e86c13c23a5570d
    Author: Randy Dunlap
    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: Randy Dunlap
    Cc: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 4658620158dc2fbd9e4bcb213c5b6fb5d05ba7d4
    Author: Venkatesh Pallipadi
    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.html

    Signed-off-by: Venkatesh Pallipadi
    Cc: Larry Finger
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit c17e168aa6e5fe3851baaae8df2fbc1cf11443a9
    Author: Len Brown
    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: Len Brown

    commit 8c91d958246bde68db0c3f0c57b535962ce861cb
    Author: Adrian Bunk
    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: Adrian Bunk
    Cc: Venkatesh Pallipadi
    Cc: Adam Belay
    Cc: Shaohua Li
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 0c39dc3187094c72c33ab65a64d2017b21f372d2
    Author: Venkatesh Pallipadi
    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: Venkatesh Pallipadi
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 8112e3b115659b07df340ef170515799c0105f82
    Author: Venkatesh Pallipadi
    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: Venkatesh Pallipadi
    Cc: Adam Belay
    Cc: Shaohua Li
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    commit 1eb4431e9599cd25e0d9872f3c2c8986821839dd
    Author: Venkatesh Pallipadi
    Date: Thu Feb 22 13:54:57 2007 -0800

    cpuidle take2: Basic documentation for cpuidle

    Documentation for cpuidle infrastructure

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Adam Belay
    Signed-off-by: Shaohua Li
    Signed-off-by: Len Brown

    commit ef5f15a8b79123a047285ec2e3899108661df779
    Author: Venkatesh Pallipadi
    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: Shaohua Li
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Adam Belay
    Signed-off-by: Len Brown

    commit 987196fa82d4db52c407e8c9d5dec884ba602183
    Author: Venkatesh Pallipadi
    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: Adam Belay
    Signed-off-by: Shaohua Li
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    Signed-off-by: Len Brown

    Len Brown
     

23 Sep, 2007

1 commit

  • device_suspend() calls ACPI suspend functions, which seems to have undesired
    side effects on lower idle C-states. It took me some time to realize that
    especially the VAIO BIOSes (both Andrews jinxed UP and my elfstruck SMP one)
    show this effect. I'm quite sure that other bug reports against suspend/resume
    about turning the system into a brick have the same root cause.

    After fishing in the dark for quite some time, I realized that removing the ACPI
    processor module before suspend (this removes the lower C-state functionality)
    made the problem disappear. Interestingly enough the propability of having a
    bricked box is influenced by various factors (interrupts, size of the ram image,
    ...). Even adding a bunch of printks in the wrong places made the problem go
    away. The previous periodic tick implementation simply pampered over the
    problem, which explains why the dyntick / clockevents changes made this more
    prominent.

    We avoid complex functionality during the boot process and we have to do the
    same during suspend/resume. It is a similar scenario and equaly fragile.

    Add suspend / resume functions to the ACPI processor code and disable the lower
    idle C-states across suspend/resume. Fall back to the default idle
    implementation (halt) instead.

    Signed-off-by: Thomas Gleixner
    Tested-by: Andrew Morton
    Cc: Len Brown
    Cc: Venkatesh Pallipadi
    Cc: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     

16 Sep, 2007

1 commit