[coreboot] Lenovo X200 running Coreboot drains 3-4W more power than with Vendor BIOS

Nico Huber nico.huber at secunet.com
Mon May 2 13:16:15 CEST 2016


On 02.05.2016 01:06, Daniel Kulesz wrote:
>>> - disabling "cpu power management" makes the idle consumption raise to 12,8W
>> Is this 12.8W compared to 7.5W (i.e. with lowest backlight)?
>>
> 
> Nope, I am only comparing with highest backlight now, so it is 12.8W versus 10.0W here.
Hmmm, 2.8W... whatever that option does it confuses me.

>>> Any ideas which could solve this mystery?
>>>
>> One more thing you can test, in case your Linux uses the intel_idle
>> driver: There is a kernel parameter intel_idle.max_cstate, if you boot
>> the vendor BIOS with defaults and Linux with intel_idle.max_cstate=2 it
>> should use C1/C2 but not C3/C4 and thus behave more like coreboot.
>>
> Okay. I was just aware of the generic "processor.max_cstate=2"
> parameter. I tried with both parameters using the vendor BIOS and here
> are the results:
> 
> intel_idle.max_cstate=2: 10W in idle at full brightness (no effect)
> processor.max_cstate=2: 12.6W in idle at full brightness
> 
> So it seems plausible that this issue is related to Coreboot not
> (properly?) supporting C3/C4. So this is a known issue then? If yes,
> imho it should be *definitely* documented on the wiki page since it
> could be a "showstopper" for many adopters who need the maximum battery
> life the X200 is able to deliver only with the vendor BIOS at this point
> in time ...
Well, let's see what we got:
  o 10.0W with "cpu power management"
  o 12.6W with "cpu power management" but max_cstate=2
  o 12.8W without "cpu power management"
FWIW, C2 usually saves more power. So I wonder how good your measuring
at the wall plug works. Another easy option to measure the power
consumption is looking at what the battery reports (usually
/sys/class/power_supply/BAT0/power_now).

Regarding C3/C4 support, AFAIK, we implemented it fully but it just
didn't work on the system we originally ported coreboot for (Roda/RK9).
The system kept resetting whenever it should enter (or maybe exit) C3,
IIRC.  You could give it a try on your X200 though. Whatever the issue
on the RK9 was, it might be board specific.

If you want to try it, in src/mainboard/lenovo/x200/cstates.c add:
        {
                /* acpi C3 / cpu C3 */
                3, 0x02,  300,
                { ACPI_ADDRESS_SPACE_FIXED, 1, 2, { 1 }, 0x20, 0 }
        },
for C3 or
        {
                /* acpi C3 / cpu C4 */
                3, 0x02,  300,
                { ACPI_ADDRESS_SPACE_FIXED, 1, 2, { 1 }, 0x30, 0 }
        },
for C4. You can not have all of them, as ACPI only supports three
C-states.

Nico

-- 
M. Sc. Nico Huber
Senior Berater SINA-Softwareentwicklung
Netzwerk- & Client-Sicherheit / Network & Client Security
Division Öffentliche Auftraggeber / Public Authorities
secunet Security Networks AG

Tel.: +49-201-5454-3635, Fax: +49-201-5454-1325
E-Mail: nico.huber at secunet.com
Mergenthalerallee 77, 65760 Eschborn, Deutschland
www.secunet.com
______________________________________________________________________

Sitz: Kurfürstenstraße 58, 45138 Essen, Deutschland
Amtsgericht Essen HRB 13615
Vorstand: Dr. Rainer Baumgart (Vors.), Thomas Pleines
Aufsichtsratsvorsitzender: Dr. Peter Zattler
______________________________________________________________________



More information about the coreboot mailing list