ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C

Bug #516325 reported by Alex Chiang on 2010-02-02
This bug affects 14 people
Affects Status Importance Assigned to Milestone
Fix Released
linux (Ubuntu)
Andy Whitcroft
Stefan Bader

Bug Description

SRU Justification:

Impact: Not entering deeper C-states causes more heat and can cause systems to throttle or even to shut down.

Fix: This has been backported from upstream and made it into for Lucid. It looks simple enough to not cause regressions.


Please backport the following patch into Karmic:

From: Len Brown <email address hidden>

upstream in 2.6.33-rc: 5d76b6f6c17572e662f5c99c2023adae92100855

Refreshed here for 2.6.32.y, applies w/ offset back to 2.6.29.y.

Linux has always ignored ACPI BIOS C2 with exit latency > 100 usec,
and the ACPI spec is clear that is correct FADT-supplied C2.
However, the ACPI spec explicitly states that _CST-supplied C-states
have no latency limits.

So move the 100usec C2 test out of the code shared
by FADT and _CST code-paths, and into the FADT-specific path.

This bug has not been visible until Nehalem, which advertises
a CPU-C2 worst case exit latency on servers of 205usec.
That (incorrect) figure is being used by BIOS writers
on mobile Nehalem systems for the AC configuration.
Thus, Linux ignores C2 leaving just C1, which is
saves less power, and also impacts performance
by preventing the use of turbo mode.

Alex Chiang (achiang) wrote :

Many new Intel Core i7 laptops will not work correctly unless this patch is applied.

Changed in linux:
status: Unknown → Fix Released
Stefan Bader (smb) on 2010-02-09
Changed in linux (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
Stefan Bader (smb) on 2010-02-09
Changed in linux (Ubuntu Karmic):
assignee: nobody → Stefan Bader (stefan-bader-canonical)
importance: Undecided → Medium
status: New → Fix Committed
Changed in linux (Ubuntu):
status: Triaged → Fix Committed
assignee: nobody → Andy Whitcroft (apw)
Stefan Bader (smb) on 2010-02-09
description: updated
Launchpad Janitor (janitor) wrote :
Download full text (11.7 KiB)

This bug was fixed in the package linux - 2.6.32-13.18

linux (2.6.32-13.18) lucid; urgency=low

  [ Andy Whitcroft ]

  * Revert "enforcer -- make the enforcement configuration common"
  * Revert "(pre-stable) Input: ALPS - add interleaved protocol support
    (Dell E6x00 series)"
  * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390"
  * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to
  * Revert "SAUCE: Adds support for COMPAL JHL90 webcam"
  * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching"
  * Revert "SAUCE: make fc transport removal of target configurable"
  * enforcer -- make the enforcement configuration common
  * getabis -- add preempt flavour to the list
  * [Config] enforce DEVTMPFS options
  * [Config] armel -- cleanup to-be builtin modules
  * [Config] cleanup ports configs
    - LP: #485536
  * add printdebian target to find branch target
  * distclean -- do not remove debian.env
  * [Config] generic-pae switch to M586TSC
    - LP: #519448
  * git-ubuntu-log -- commonise duplicated log handling
  * git-ubuntu-log -- tighten up Bug: NNNN matching
  * git-ubuntu-log -- sort the bug numbers

  [ Chris Wilson ]

  * (pre-stable) drm/i915: Increase fb alignment to 64k
    - LP: #404064

  [ Eric Miao ]

  * arm -- enable ubuntu/ directory

  [ Huang Ying ]

  * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation
  * SAUCE: crypto: ghash-intel - Fix building failure on x86_32

  [ Loïc Minier ]

  * [Config] cleanup preempt configuration
  * [Config] versatile: Fix video output
    - LP: #517594
  * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768
  * [Config] Large update to armel/versatile
  * [Config] versatile: Add RTC support
  * [Config] armel: Enable NEON
  * [Config] versatile: Builtin MMC support
  * [Config] versatile Builtin SCSI controller
  * [Config] armel Disable dma_cache_sync callers
  * [Config] armel Disable asm/time.h users
  * [Config] armel Disable out of range udelay()
  * [Config] armel Disable flush_cache_range() users
  * [Config] armel -- Enable ubuntu/ drivers

  [ Steve Conklin ]

  * SAUCE: drm/i915: Add display hotplug event on Ironlake
  * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake

  [ Upstream Kernel Changes ]

  * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support"
  * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions
    in IRQ handler""
  * clockevent: Don't remove broadcast device when cpu is dead
  * clockevents: Add missing include to pacify sparse
  * ACPI: don't cond_resched if irq is disabled
  * be2net: Add support for next generation of BladeEngine device.
  * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE.
  * mpt2sas: New device SAS2208 support is added
  * ar9170: Add support for D-Link DWA 160 A2
  * powerpc/fsl: Add PCI device ids for new QoirQ chips
  * davinci: dm646x: Add support for 3.x silicon revision
  * Input: ALPS - add interleaved protocol support (Dell E6x00 series)
  * Driver-Core: devtmpfs - set root directory mode to 0755
  * driver-core: fix devtmpfs crash on s390
  * vfs: get_sb_single() ...

Changed in linux (Ubuntu):
status: Fix Committed → Fix Released
Ákos Maróy (akos-maroy) wrote :

I'm having the same issue on an HP Envy 15, and I'm running 2.6.32-13-generic #18, but the machine seems to run at around 50+ C in idle. how can I check & make sure that indeed the kernel I'm running contains Alex's patch, and that it works as expected?

Stefan Bader (smb) wrote :

If it is a 2.6.32-13.18 kernel, then the patch is included. Now for usage, from the description I would say without it and a high latency announced C2 would not get used at all. If you see usage of C2 then I would say the patch works. But with a high latency announced the system less often will select C2 as it considers the longer time to get out of that.

Accepted linux into karmic-proposed, the package will build now and be available in a few hours. Please test and give feedback here. See for documentation how to enable and use -proposed. Thank you in advance!

tags: added: verification-needed
Launchpad Janitor (janitor) wrote :
Download full text (5.1 KiB)

This bug was fixed in the package linux - 2.6.31-21.59

linux (2.6.31-21.59) karmic-proposed; urgency=low

  [ Andy Whitcroft ]

  * [Config] generic-pae switch to M586TSC
    - LP: #519448

  [ Chris Wilson ]

  * (pre-stable) drm/i915: Increase fb alignment to 64k
    - LP: #404064

  [ Colin Ian King ]

  * Input: i8042 - bypass AUX IRQ delivery test on laptops
    - LP: #534448

  [ Jerone Young ]

  * SAUCE: Fix volume hotkeys for Dell Studio 1557
    - LP: #465250

  [ Mirsal Ennaime ]

  * SAUCE: aufs: Fix header files inclusion in debug.h
    - LP: #517151

  [ Stefan Bader ]

  * [Config] Enable all CGROUP configuration options
    - LP: #480739

  [ Surbhi Palande ]

  * Revert "[Upstream] acerhdf: Limit modalias matching to supported
    - LP: #509730
  * [Config] ext3 defaults to ordered mode
    - LP: #510067

  [ Tim Gardner ]

  * [Config] Fix sub-flavours package conflicts
    - LP: #454827

  [ Upstream Kernel Changes ]

  * PCI/cardbus: Add a fixup hook and fix powerpc
    - LP: #455723
  * fnctl: f_modown should call write_lock_irqsave/restore
    - LP: #519436
  * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C
    - LP: #516325
  * tg3: Add 57788, remove 57720
    - LP: #515390
  * HID: ignore all recent SoundGraph iMON devices
    - LP: #488443
  * Input: ALPS - add interleaved protocol support (Dell E6x00 series)
    - LP: #296610
  * acerhdf: limit modalias matching to supported
    - LP: #509730
  * ASoC: Do not write to invalid registers on the wm9712.
    - LP: #509730
  * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS
    - LP: #509730
  * clockevents: Prevent clockevent_devices list corruption on cpu hotplug
    - LP: #509730
  * dma: at_hdmac: correct incompatible type for argument 1 of
    - LP: #509730
  * drivers/net/usb: Correct code taking the size of a pointer
    - LP: #509730
  * Libertas: fix buffer overflow in lbs_get_essid()
    - LP: #509730
  * md: Fix unfortunate interaction with evms
    - LP: #509730
  * pata_cmd64x: fix overclocking of UDMA0-2 modes
    - LP: #509730
  * pata_hpt3x2n: fix clock turnaround
    - LP: #509730
  * SCSI: fc class: fix fc_transport_init error handling
    - LP: #509730
  * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer
    - LP: #509730
  * USB: emi62: fix crash when trying to load EMI 6|2 firmware
    - LP: #509730
  * USB: Fix a bug on appledisplay.c regarding signedness
    - LP: #509730
  * USB: musb: gadget_ep0: avoid SetupEnd interrupt
    - LP: #509730
  * USB: option: support hi speed for modem Haier CE100
    - LP: #490068, #509730
  * x86, cpuid: Add "volatile" to asm in native_cpuid()
    - LP: #509730
  * e100: Use pci pool to work around GFP_ATOMIC order 5 memory allocation
    - LP: #509730
  * e100: Fix broken cbs accounting due to missing memset.
    - LP: #509730
  * hostap: Revert a toxic part of the conversion to net_device_ops
    - LP: #509730
  * hwmon: (fschmd) Fix check on unsigned in watchdog_write()
    - LP: #509730
  * hwmon: (sht15) Off-by-one error in array index + incorrect constants
    - LP: #509730
  * i2c/tsl2550: Fix...


Changed in linux (Ubuntu Karmic):
status: Fix Committed → Fix Released
Changed in linux:
importance: Unknown → Medium
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Related blueprints

Remote bug watches

Bug watches keep track of this bug in other bug trackers.