Bug 108058

Summary: After resuming from suspend, discrete GPU is powered on and can't be turned off
Product: xorg Reporter: Domenico Iezzi <domenico.iezzi.201>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED MOVED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: cevelnet, domenico.iezzi.201
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
i915 platform: i915 features:
Description Flags
kernel log
dmesg, comments at line 947 and 1051
dmidecode Dell M3800
lspci Dell M3800
lspci verbose Dell M3800 none

Description Domenico Iezzi 2018-09-25 12:15:55 UTC
Created attachment 141734 [details]
kernel log

Overall, nouveau works without problem in managing discrete GPU PM, and if I check power consumption using powertop on a fresh boot it reports an average battery discharge rate of ~7W like always.
After I resume the laptop from suspend, /sys/kernel/debug/vgaswitcheroo/switch reports that the device is
dynamically turned off:

1:DIS: :DynOff:0000:01:00.0

But if I check with powertop, I get a battery discharge rate of ~11W. To better identify the problem, I tried using bumbleebee+bbswitch+nvidia-driver and see what bbswitch module reports. On a fresh boot, it works
ok as the nouveau driver, but after resuming from suspend
/proc/acpi/bbswitch reports that the card is turned ON, and there is no way to power it off:

[root@example user]# cat /proc/acpi/bbswitch 
0000:04:00.0 ON
[root@example user]# tee /proc/acpi/bbswitch <<<OFF
[root@example user]# cat /proc/acpi/bbswitch 
0000:04:00.0 ON

I attached the kernel log using following parameters when using only nouveau driver (no bumblebee/bbswitch/nvidia): log_buf_len=1M nouveau.debug=debug.

System specs:
Asus Vivobook S551LN
Intel i7 4500U
Archlinux 4.18.9-arch1-1-ARCH (but affecting older versions, since early 4.x version when i started using linux)
Comment 1 Tolga Cakir 2018-11-22 14:31:32 UTC
I might have the same issue - I posted it under bug 98386. Happens on a Dell M3800, Intel Core i7-4702HQ, Nvidia Quadro K1100M, Arch Linux w/ kernel 4.19.2.

Same as you, after fresh boot I get around  ~7W in idle and after S3 resume I get 15W and more, no matter how long I wait. Contrary to your observations, bbswitch works for me; nouveau doesn't.

I have found out, that echoing lowest pstate (/sys/kernel/debug/dri/*/pstate) after S3 resume solves this issue. Power consumption drops back to 7-8W in idle.

I will post full dmidecode and dmesg in a couple of hours.
Comment 2 Tolga Cakir 2018-11-22 20:25:24 UTC
Created attachment 142575 [details]
dmesg, comments at line 947 and 1051
Comment 3 Tolga Cakir 2018-11-22 20:25:58 UTC
Created attachment 142576 [details]
dmidecode Dell M3800
Comment 4 Tolga Cakir 2018-11-22 20:26:18 UTC
Created attachment 142577 [details]
lspci Dell M3800
Comment 5 Tolga Cakir 2018-11-22 20:26:42 UTC
Created attachment 142578 [details]
lspci verbose Dell M3800
Comment 6 Tolga Cakir 2019-02-08 02:03:29 UTC
No longer occurs under stable kernel 4.20.6. Can you confirm this @Domenico?
Comment 7 Domenico Iezzi 2019-03-17 17:05:07 UTC
Still occurring to me on linux 5.0.2.

I also noticed that after resuming from suspend, if I run something with the discrete GPU like this:

    DRI_PRIME=1 glxgears -info

the power consumption returns to normal values. This seems to be the same behavior already noticed by @Tolga in comment #1
Comment 8 Martin Peres 2019-12-04 09:45:42 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/issues/461.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.