13 Nov, 2011

1 commit

  • After commit e978aa7d7d57 ("cpuidle: Move dev->last_residency update to
    driver enter routine; remove dev->last_state") setting acpi_idle_suspend
    to 1 by acpi_processor_suspend() causes the ACPI cpuidle routines to
    return error codes continuously, which in turn causes cpuidle to lock up
    (hard).

    However, acpi_idle_suspend doesn't appear to be useful for any
    particular purpose (it's racy and doesn't really provide any real
    protection), so it can be removed, which makes the problem go away.

    Reported-and-tested-by: Tomas M.
    Reported-and-tested-by: Ferenc Wagner
    Tested-by: Arnd Bergmann
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

08 Nov, 2011

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    cpuidle: Single/Global registration of idle states
    cpuidle: Split cpuidle_state structure and move per-cpu statistics fields
    cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev->prepare()
    cpuidle: Move dev->last_residency update to driver enter routine; remove dev->last_state
    ACPI: Fix CONFIG_ACPI_DOCK=n compiler warning
    ACPI: Export FADT pm_profile integer value to userspace
    thermal: Prevent polling from happening during system suspend
    ACPI: Drop ACPI_NO_HARDWARE_INIT
    ACPI atomicio: Convert width in bits to bytes in __acpi_ioremap_fast()
    PNPACPI: Simplify disabled resource registration
    ACPI: Fix possible recursive locking in hwregs.c
    ACPI: use kstrdup()
    mrst pmu: update comment
    tools/power turbostat: less verbose debugging

    Linus Torvalds
     

07 Nov, 2011

3 commits

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

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

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

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Trinabh Gupta
    Tested-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Acked-by: Arjan van de Ven
    Acked-by: Kevin Hilman
    Signed-off-by: Len Brown

    Deepthi Dharwar
     
  • This is the first step towards global registration of cpuidle
    states. The statistics used primarily by the governor are per-cpu
    and have to be split from rest of the fields inside cpuidle_state,
    which would be made global i.e. single copy. The driver_data field
    is also per-cpu and moved.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Trinabh Gupta
    Tested-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Acked-by: Arjan van de Ven
    Acked-by: Kevin Hilman
    Signed-off-by: Len Brown

    Deepthi Dharwar
     
  • Cpuidle governor only suggests the state to enter using the
    governor->select() interface, but allows the low level driver to
    override the recommended state. The actual entered state
    may be different because of software or hardware demotion. Software
    demotion is done by the back-end cpuidle driver and can be accounted
    correctly. Current cpuidle code uses last_state field to capture the
    actual state entered and based on that updates the statistics for the
    state entered.

    Ideally the driver enter routine should update the counters,
    and it should return the state actually entered rather than the time
    spent there. The generic cpuidle code should simply handle where
    the counters live in the sysfs namespace, not updating the counters.

    Reference:
    https://lkml.org/lkml/2011/3/25/52

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Trinabh Gupta
    Tested-by: Jean Pihet
    Reviewed-by: Kevin Hilman
    Acked-by: Arjan van de Ven
    Acked-by: Kevin Hilman
    Signed-off-by: Len Brown

    Deepthi Dharwar
     

26 Oct, 2011

1 commit

  • * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    rtmutex: Add missing rcu_read_unlock() in debug_rt_mutex_print_deadlock()
    lockdep: Comment all warnings
    lib: atomic64: Change the type of local lock to raw_spinlock_t
    locking, lib/atomic64: Annotate atomic64_lock::lock as raw
    locking, x86, iommu: Annotate qi->q_lock as raw
    locking, x86, iommu: Annotate irq_2_ir_lock as raw
    locking, x86, iommu: Annotate iommu->register_lock as raw
    locking, dma, ipu: Annotate bank_lock as raw
    locking, ARM: Annotate low level hw locks as raw
    locking, drivers/dca: Annotate dca_lock as raw
    locking, powerpc: Annotate uic->lock as raw
    locking, x86: mce: Annotate cmci_discover_lock as raw
    locking, ACPI: Annotate c3_lock as raw
    locking, oprofile: Annotate oprofilefs lock as raw
    locking, video: Annotate vga console lock as raw
    locking, latencytop: Annotate latency_lock as raw
    locking, timer_stats: Annotate table_lock as raw
    locking, rwsem: Annotate inner lock as raw
    locking, semaphores: Annotate inner lock as raw
    locking, sched: Annotate thread_group_cputimer as raw
    ...

    Fix up conflicts in kernel/posix-cpu-timers.c manually: making
    cputimer->cputime a raw lock conflicted with the ABBA fix in commit
    bcd5cff7216f ("cputimer: Cure lock inversion").

    Linus Torvalds
     

13 Sep, 2011

1 commit

  • We cannot preempt this lock on -rt as we are in an
    interrupt disabled region and about to go into deep sleep.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    Cc: Len Brown
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

25 Aug, 2011

1 commit


29 May, 2011

1 commit

  • The workaround for AMD erratum 400 uses the term "c1e" falsely suggesting:
    1. Intel C1E is somehow involved
    2. All AMD processors with C1E are involved

    Use the string "amd_c1e" instead of simply "c1e" to clarify that
    this workaround is specific to AMD's version of C1E.
    Use the string "e400" to clarify that the workaround is specific
    to AMD processors with Erratum 400.

    This patch is text-substitution only, with no functional change.

    cc: x86@kernel.org
    Acked-by: Borislav Petkov
    Signed-off-by: Len Brown

    Len Brown
     

13 Jan, 2011

3 commits

  • Len Brown
     
  • CPUIDLE_FLAG_SHALLOW
    CPUIDLE_FLAG_BALANCED
    CPUIDLE_FLAG_DEEP
    CPUIDLE_FLAG_CHECK_BM

    were set by acpi_processor_setup_cpuidle(),
    but never used by cpuidle or by acpi_idle.
    So stop setting them.

    Signed-off-by: Len Brown

    Len Brown
     
  • Having four variables for the same thing:
    idle_halt, idle_nomwait, force_mwait and boot_option_idle_overrides
    is rather confusing and unnecessary complex.

    if idle= boot param is passed, only set up one variable:
    boot_option_idle_overrides

    Introduces following functional changes/fixes:
    - intel_idle driver does not register if any idle=xy
    boot param is passed.
    - processor_idle.c will also not register a cpuidle driver
    and get active if idle=halt is passed.
    Before a cpuidle driver with one (C1, halt) state got registered
    Now the default_idle function will be used which finally uses
    the same idle call to enter sleep state (safe_halt()), but
    without registering a whole cpuidle driver.

    That means idle= param will always avoid cpuidle drivers to register
    with one exception (same behavior as before):
    idle=nomwait
    may still register acpi_idle cpuidle driver, but C1 will not use
    mwait, but hlt. This can be a workaround for IO based deeper sleep
    states where C1 mwait causes problems.

    Signed-off-by: Thomas Renninger
    cc: x86@kernel.org
    Signed-off-by: Len Brown

    Thomas Renninger
     

17 Dec, 2010

1 commit

  • __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
    Cc: Martin Schwidefsky
    Cc: Sedat Dilek
    Acked-by: H. Peter Anvin
    Signed-off-by: Christoph Lameter
    Signed-off-by: Tejun Heo

    Christoph Lameter
     

27 Oct, 2010

1 commit

  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (53 commits)
    ACPI: install ACPI table handler before any dynamic tables being loaded
    ACPI / PM: Blacklist another machine that needs acpi_sleep=nonvs
    ACPI: Page based coalescing of I/O remappings optimization
    ACPI: Convert simple locking to RCU based locking
    ACPI: Pre-map 'system event' related register blocks
    ACPI: Add interfaces for ioremapping/iounmapping ACPI registers
    ACPI: Maintain a list of ACPI memory mapped I/O remappings
    ACPI: Fix ioremap size for MMIO reads and writes
    ACPI / Battery: Return -ENODEV for unknown values in get_property()
    ACPI / PM: Fix reference counting of power resources
    Subject: [PATCH] ACPICA: Fix Scope() op in module level code
    ACPI battery: support percentage battery remaining capacity
    ACPI: Make Embedded Controller command timeout delay configurable
    ACPI dock: move some functions to .init.text
    ACPI: thermal: remove unused limit code
    ACPI: static sleep_states[] and acpi_gts_bfs_check
    ACPI: remove dead code
    ACPI: delete dedicated MAINTAINERS entries for ACPI EC and BATTERY drivers
    ACPI: Only processor needs CPU_IDLE
    ACPICA: Update version to 20101013
    ...

    Linus Torvalds
     

16 Oct, 2010

1 commit


02 Oct, 2010

1 commit


15 Aug, 2010

3 commits


07 Aug, 2010

1 commit

  • …x/kernel/git/tip/linux-2.6-tip

    * 'timers-timekeeping-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    um: Fix read_persistent_clock fallout
    kgdb: Do not access xtime directly
    powerpc: Clean up obsolete code relating to decrementer and timebase
    powerpc: Rework VDSO gettimeofday to prevent time going backwards
    clocksource: Add __clocksource_updatefreq_hz/khz methods
    x86: Convert common clocksources to use clocksource_register_hz/khz
    timekeeping: Make xtime and wall_to_monotonic static
    hrtimer: Cleanup direct access to wall_to_monotonic
    um: Convert to use read_persistent_clock
    timkeeping: Fix update_vsyscall to provide wall_to_monotonic offset
    powerpc: Cleanup xtime usage
    powerpc: Simplify update_vsyscall
    time: Kill off CONFIG_GENERIC_TIME
    time: Implement timespec_add
    x86: Fix vtime/file timestamp inconsistencies

    Trivial conflicts in Documentation/feature-removal-schedule.txt

    Much less trivial conflicts in arch/powerpc/kernel/time.c resolved as
    per Thomas' earlier merge commit 47916be4e28c ("Merge branch
    'powerpc.cherry-picks' into timers/clocksource")

    Linus Torvalds
     

02 Aug, 2010

1 commit

  • Accomodate the original C1E-aware idle routine to the different times
    during boot when the BIOS enables C1E. While at it, remove the synthetic
    CPUID flag in favor of a single global setting which denotes C1E status
    on the system.

    [ hpa: changed c1e_enabled to be a bool; clarified cpu bit 3:21 comment ]

    Signed-off-by: Michal Schmidt
    LKML-Reference:
    Signed-off-by: Borislav Petkov
    Signed-off-by: H. Peter Anvin
    Acked-by: Thomas Gleixner

    Michal Schmidt
     

27 Jul, 2010

1 commit

  • Now that all arches have been converted over to use generic time via
    clocksources or arch_gettimeoffset(), we can remove the GENERIC_TIME
    config option and simplify the generic code.

    Signed-off-by: John Stultz
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    John Stultz
     

23 Jul, 2010

3 commits

  • Len Brown
     
  • processor.bm_check_disable=1" prevents Linux from checking BM_STS
    before entering C3-type cpu power states.

    This may be useful for a system running acpi_idle
    where the BIOS exports FADT C-states, _CST IO C-states,
    or _CST FFH C-states with the BM_STS bit set;
    while configuring the chipset to set BM_STS
    more frequently than perhaps is optimal.

    Note that such systems may have been developed
    using a tickful OS that would quickly clear BM_STS,
    rather than a tickless OS that may go for some time
    between checking and clearing BM_STS.

    Note also that an alternative for newer systems
    is to use the intel_idle driver, which always
    ignores BM_STS, relying Linux device drivers
    to register constraints explicitly via PM_QOS.

    https://bugzilla.kernel.org/show_bug.cgi?id=15886

    Signed-off-by: Len Brown

    Len Brown
     
  • It turns out that there is a bit in the _CST for Intel FFH C3
    that tells the OS if we should be checking BM_STS or not.

    Linux has been unconditionally checking BM_STS.
    If the chip-set is configured to enable BM_STS,
    it can retard or completely prevent entry into
    deep C-states -- as illustrated by turbostat:

    http://userweb.kernel.org/~lenb/acpi/utils/pmtools/turbostat/

    ref: Intel Processor Vendor-Specific ACPI Interface Specification
    table 4 "_CST FFH GAS Field Encoding"
    Bit 1: Set to 1 if OSPM should use Bus Master avoidance for this C-state

    https://bugzilla.kernel.org/show_bug.cgi?id=15886

    Signed-off-by: Len Brown

    Len Brown
     

21 Jul, 2010

1 commit


05 Jun, 2010

2 commits

  • acpi_enter_[simple|bm] routines does us to pm tick conversion on every
    idle wakeup and the value is only used in /proc/acpi display. We can
    store the time in us and convert it into pm ticks before printing instead and
    avoid the conversion in the common path.

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

    Venkatesh Pallipadi
     
  • The C-state idle time is not calculated correctly, which will return the wrong
    residency time in C-state. It will have the following effects:
    1. The system can't choose the deeper C-state when it is idle next time.
    Of course the system power is increased. E.g. On one server machine about 40W
    idle power is increased.
    2. The powertop shows that it will stay in C0 running state about 95% time
    although the system is idle at most time.

    2.6.35-rc1 regression caused-by: 2da513f582a96c053aacc2c92873978d2ea7abff
    (ACPI: Minor cleanup eliminating redundant PMTIMER_TICKS to NS conversion)

    Signed-off-by: Zhao Yakui
    Reported-by: Yu Zhidong
    Tested-by: Yu Zhidong
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    Zhao Yakui
     

29 May, 2010

4 commits

  • * 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6:
    intel_idle: native hardware cpuidle driver for latest Intel processors
    ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case
    acpi_pad: uses MONITOR/MWAIT, so it doesn't need to clear TS_POLLING
    sched: clarify commment for TS_POLLING
    ACPI: allow a native cpuidle driver to displace ACPI
    cpuidle: make cpuidle_curr_driver static
    cpuidle: add cpuidle_unregister_driver() error check
    cpuidle: fail to register if !CONFIG_CPU_IDLE

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (27 commits)
    ACPI: Don't let acpi_pad needlessly mark TSC unstable
    drivers/acpi/sleep.h: Checkpatch cleanup
    ACPI: Minor cleanup eliminating redundant PMTIMER_TICKS to NS conversion
    ACPI: delete unused c-state promotion/demotion data strucutures
    ACPI: video: fix acpi_backlight=video
    ACPI: EC: Use kmemdup
    drivers/acpi: use kasprintf
    ACPI, APEI, EINJ injection parameters support
    Add x64 support to debugfs
    ACPI, APEI, Use ERST for persistent storage of MCE
    ACPI, APEI, Error Record Serialization Table (ERST) support
    ACPI, APEI, Generic Hardware Error Source memory error support
    ACPI, APEI, UEFI Common Platform Error Record (CPER) header
    Unified UUID/GUID definition
    ACPI Hardware Error Device (PNP0C33) support
    ACPI, APEI, PCIE AER, use general HEST table parsing in AER firmware_first setup
    ACPI, APEI, Document for APEI
    ACPI, APEI, EINJ support
    ACPI, APEI, HEST table parsing
    ACPI, APEI, APEI supporting infrastructure
    ...

    Linus Torvalds
     
  • acpi_enter_[simple,bm] does
    idle timing in ns, convert it to timeval, then to us, then to
    pmtimer_ticks and then back to ns.

    This patch changes things to
    idle timing in ns, convert it to us, and then to pmtimer_ticks.

    Just saves an imul along this path, but makes the code cleaner.

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

    Venkatesh Pallipadi
     
  • commit d306ebc28649b89877a22158fe0076f06cc46f60
    (ACPI: Be in TS_POLLING state during mwait based C-state entry)
    fixed an important power & performance issue where ACPI c2 and c3 C-states
    were clearing TS_POLLING even when using MWAIT (ACPI_STATE_FFH).
    That bug had been causing us to receive redundant scheduling interrups
    when we had already been woken up by MONITOR/MWAIT.

    Following up on that...

    In the MWAIT case, we don't have to subsequently
    check need_resched(), as that c heck was there
    for the TS_POLLING-clearing case.

    Note that not only does the cpuidle calling function
    already check need_resched() before calling us, the
    low-level entry into monitor/mwait calls it twice --
    guaranteeing that a write to the trigger address
    can not go un-noticed.

    Also, in this case, we don't have to set TS_POLLING
    when we wake, because we never cleared it.

    Signed-off-by: Len Brown
    Acked-by: Venkatesh Pallipadi

    Len Brown
     

22 May, 2010

1 commit


11 May, 2010

1 commit

  • This patch changes the string based list management to a handle base
    implementation to help with the hot path use of pm-qos, it also renames
    much of the API to use "request" as opposed to "requirement" that was
    used in the initial implementation. I did this because request more
    accurately represents what it actually does.

    Also, I added a string based ABI for users wanting to use a string
    interface. So if the user writes 0xDDDDDDDD formatted hex it will be
    accepted by the interface. (someone asked me for it and I don't think
    it hurts anything.)

    This patch updates some documentation input I got from Randy.

    Signed-off-by: markgross
    Signed-off-by: Rafael J. Wysocki

    Mark Gross
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

02 Mar, 2010

1 commit

  • * 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
    ACPI: replace acpi_integer by u64
    ACPICA: Update version to 20100121.
    ACPICA: Remove unused uint32_struct type
    ACPICA: Disassembler: Remove obsolete "Integer64" field in parse object
    ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type
    ACPICA: Predefined name repair: fix NULL package elements
    ACPICA: AcpiGetDevices: Eliminate unnecessary _STA calls
    ACPICA: Update all ACPICA copyrights and signons to 2010
    ACPICA: Update for new gcc-4 warning options

    Linus Torvalds
     

23 Feb, 2010

1 commit

  • ACPI deep C-state entry had a long standing bug/missing feature, wherein we were sending
    resched IPIs when an idle CPU is in mwait based deep C-state. Only mwait based C1 was using
    the write to the monitored address to wake up mwait'ing CPU.

    This patch changes the code to retain TS_POLLING bit if we are entering an mwait based
    deep C-state.

    The patch has been verified to reduce the number of resched IPIs in general and also
    improves the performance/power on workloads with low system utilization (i.e., when mwait based
    deep C-states are being used).

    Fixes "netperf ~50% regression with 2.6.33-rc1, bisect to 1b9508f"
    http://marc.info/?l=linux-kernel&m=126441481427331&w=4

    Reported-by: Lin Ming
    Tested-by: Alex Shi
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Len Brown

    Pallipadi, Venkatesh
     

16 Feb, 2010

1 commit

  • Since the rewrite of the CPU idle governor in 2.6.32, two laptops have
    surfaced where the BIOS advertises a C2 power state, but for some reason
    this state is not functioning (as verified in both cases by powertop
    before the patch in .32).

    The old governor had the accidental behavior that if a non-working state
    was chosen too many times, it would end up falling back to C1. The new
    governor works differently and this accidental behavior is no longer
    there; the result is a high temperature on these two machines.

    This patch adds these 2 machines to the DMI table for C state anomalies;
    by just not using C2 both these machines are better off (the TSC can be
    used instead of the pm timer, giving a performance boost for example).

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

    Signed-off-by: Arjan van de Ven
    Reported-by:
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Arjan van de Ven
     

28 Jan, 2010

1 commit


20 Jan, 2010

1 commit