[personal profile] mjg59
(Edit to add: this issue is restricted to the mobile SKUs. Desktop parts have very different power management behaviour)

Linux 4.5 seems to have got Intel's Skylake platform (ie, 6th-generation Core CPUs) to the point where graphics work pretty reliably, which is great progress (4.4 tended to lose all my windows every so often, especially over suspend/resume). I'm even running Wayland happily. Unfortunately one of the reasons I have a laptop is that I want to be able to do things like use it on battery, and power consumption's an important part of that. Skylake continues the trend from Haswell of moving to an SoC-type model where clock and power domains are shared between components that were previously entirely independent, and so you can't enter deep power saving states unless multiple components all have the correct power management configuration. On Haswell/Broadwell this manifested in the form of Serial ATA link power management being involved in preventing the package from going into deep power saving states - setting that up correctly resulted in a reduction in full-system power consumption of about 40%[1].

I've now got a Skylake platform with a nice shiny NVMe device, so Serial ATA policy isn't relevant (the platform doesn't even expose a SATA controller). The deepest power saving state I can get into is PC3, despite Skylake supporting PC8 - so I'm probably consuming about 40% more power than I should be. And nobody seems to know what needs to be done to fix this. I've found no public documentation on the power management dependencies on Skylake. Turning on everything in Powertop doesn't improve anything. My battery life is pretty poor and the system is pretty warm.

The best thing about this is the following statement from page 64 of the 6th Generation Intel ® Processor Datasheet for U-Platforms:

Caution: Long term reliability cannot be assured unless all the Low-Power Idle States are enabled.

which is pretty concerning. Without support for states deeper than PC3, Linux is running in a configuration that Intel imply may trigger premature failure. That's obviously not good. Until this situation is improved, you probably shouldn't buy any Skylake systems if you're planning on running Linux.

[1] These patches never went upstream. Someone reported that they resulted in their SSD throwing errors and I couldn't find anybody with deeper levels of SATA experience who was interested in working on the problem. Intel's AHCI drivers for Windows do the right thing, but I couldn't find anybody at Intel who could get any information from their Windows driver team.

Acer VN7-592g

Date: 2016-04-16 01:32 pm (UTC)
From: (Anonymous)
I did some more experiments regarding reasons preventing my laptop from entering deep PC modes. I am attaching some notes, hope this may help others when debugging why their SKLs fail to enter deeper PC states.

Kernel: 4.6.0rc3 (4.5 fails to work)

After start: Enters only PC2
After first suspend: Goes to PC3 max (don't know why yet - firmware must be changing some configuration)

Factors discovered preventing entering deeper PC:

1. Kernel version - 4.6 kernel is needed
2. r8169 module for:

08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

Replaced with r8168 and works flawlessly.

3. pcie_aspm=force kernel parameter is needed (by default kernel won't enable ASPM - this is needed)

4. NVIDIA Optimus: We need to first load nouveau driver, then disable the card using bbswitch (optional). If no driver is loaded (or nvidia proprietary one), then it fails to enter deeper PC states.

I use:
modprobe nouveau
sleep 1
echo OFF > /proc/acpi/bbswitch

Re: Acer VN7-592g

Date: 2016-06-04 07:56 pm (UTC)
From: (Anonymous)
Hi, I have exatly the same laptop as you and I am trying to decently run some linux distribution from months.
Currently I am running arch linux with gnome shell, and I am not as expert as you guys so could you just tell me what do you mean by deeper PC states?
I use bumblebee, with the official Nvidia drivers and the the discrete card always off (with bbswitch) laptop-mode-tools, the thermald deamon, and powertop for diagnosis, but even if I really improved my linux experience during the months, I am pretty far to obtain an experiece comparable with windows 10 where the laptop temperatures are always under 39 degrees and the battery lasts as you mentioned 40% more.
Can you just tell me those important things you found out with your experiece? Why you say that you need to use the nouveau and not the Nvidia officials? can you explain me better how to activate the sleep 1 option? what about the r8168?
Thank you in advance.
Simone

Re: Acer VN7-592g

Date: 2016-08-18 08:43 am (UTC)
From: (Anonymous)
Connected with your diagnosis, using my Dell XPS 15 9550 (32GB, 512 GB nvme SSD) and kernel 4.7.0-generic, if I *use* the Intel GPU and have the nvidia driver installed (361.42) then powertop 2.8 reports PC2/PC3 only. If I *use* the Intel GPU and have nouveau installed (1:1.0.12) then powertop shows PC2-PC8 (45%ish time in PC8). Between the two the baseline power estimate drops from 25W (with nvidia installed) to 16W (with nouveau installed) - and to be clear in both cases I'm not using the nvidia chip, just the Intel GPU.

I have some more notes here: https://ubuntuforums.org/showthread.php?t=2301071&page=32&p=13470668#post13470668

Using 4.4.0 with the nvidia driver (over the last month) I saw PC2-PC8. I didn't understand why this got worse when upgrading to 4.7.0 until a colleague suggested the driver swap (cheers Kyran!).

Profile

Matthew Garrett

About Matthew

Power management, mobile and firmware developer on Linux. Security developer at Aurora. Ex-biologist. [personal profile] mjg59 on Twitter. Content here should not be interpreted as the opinion of my employer. Also on Mastodon.

Page Summary

Expand Cut Tags

No cut tags