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:
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
Power management, mobile and firmware developer on Linux. Security developer at Aurora. Ex-biologist. mjg59 on Twitter. Content here should not be interpreted as the opinion of my employer. Also on Mastodon.
Acer VN7-592g
Date: 2016-04-16 01:32 pm (UTC)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