Intel i7-1195G7 black screen from suspend - Potential magic bullet for sleep/wake on Qubes OS

Machines: GPD Pocket 3 Intel i7-1195G7 | GPD Win Max 2021 Intel i7-1195G7

Issue:

  • The machine suspends correctly, going into S3 sleep. No issues there, thankfully.
  • Upon resume, the internal display backlight turns on, but the entire screen is black.
  • All other aspects of the machine resume correctly (the machine is not “frozen”, it’s just got a black screen)
  • If I plug an external display into the HDMI and/or USB-C ports, it is recognised and works as normal. (I think this is a good thing…)
  • The internal display can be turned off and on using xrandr, but it still shows a black screen.
  • If I unplug an external display, SCREEN :0 is re-calibrated, but the internal display keeps showing a black screen.
  • The internal display is part of SCREEN :0, even while it’s showing nothing but black.
  • The internal display backlight flashes if I try and change its resolution or run the command xset dpms force off (like a normal display would), but it still shows a black screen afterwards.
  • It’s almost like lightdm and X are aware that the internal display is there, and they both think that it’s behaving normally, but it’s just showing a black screen and they don’t know it.
  • The internal display goes back to normal on (warm and cold) reboot.

Is there a way to “simulate” unplugging and plugging back in the internal display, just like unplugging and plugging in an external one into the HDMI port?

I have a suspicion that this is what’s preventing resuming from sleep from working on quite a lot of laptops, so if anyone knows how to fix this, we’d all benefit :slight_smile:

Can anyone help?

Happy to post any logs you need.

Thank you in advance!

2 Likes

I encountered the same problem on GPD Pocket 3 Intel i7-1195G7, I tried to add mem_sleep_default=deep (suggested by [1]) and mem_sleep_default=s2idle (suggested by [2]) kernel parameters but no luck yet.

I can also confirm that the machine seems to be running as my external keyboard’s Capslock indicator is still functioning, but the screen is just black.

[1] Suspend/resume troubleshooting | Qubes OS
[2] https://www.reddit.com/r/GPDPocket/comments/rvzlmr/comment/hsdmur2/

The machine is running. Plug in an external display and it will work perfectly.

Making the machine go to sleep isn’t the issue. Making it resume properly is the problem :slight_smile:

I have a feeling that the BIOS doesn’t actually know how to initialise the display from sleep, because sysfs can’t find the EDID. That would make sense because GPD released “Windows Drivers” for components that have been around for years (and mostly already in the Linux kernel). The i915 module appears to be looking for the EDID in the wrong place.

There have been kernel patches for the original GPD Win Max which connected the internal display via eDP, but the i7-1195G7 version (the one that @zjiayao has) connects the display via DSI.

I don’t know if it actually fixes it, too or not. At the very least, I haven’t managed to fix it yet…

https://patchwork.kernel.org/project/intel-gfx/cover/20210817204329.5457-1-anisse@astier.eu/


If there was a way to “reinitialise” i915, that may fix the problem (but I’m sure there’s a much better way…).


On a side note, the AMD version has a much better BIOS, and the display has no issues resuming from sleep…when not using Xen (the hypervisor that Qubes OS is based on)…

On Qubes OS, at least at the time of writing this, amdgpu causes an Xorg coredump when resuming from S3 sleep

AMD GPUs really don’t seem to like being passed through :frowning:

1 Like

I can confirm that with the latest Qubes OS ISO (4.2.2) and kernel-latest (6.9.7), the GPD Pocket 3 successfully resumes from S3 sleep within the display fully functional, and with no issues whatsoever.

A big thank you to all involved in fixing this!

1 Like