Comment 24 for bug 1210077

Revision history for this message
Daniel Dadap (ddadap) wrote :

It looks like this is a consequence of recent changes in the kernel that allow the system to optionally skip VT switches on suspend and resume:

24576d2 drm/i915: enable VT switchless resume v3
​3cf2667 fb: add support for drivers not needing VT switch at suspend/resume time
f43f627 PM: make VT switching to the suspend console optional v3

The kernel will not skip VT switches if no drivers register their VT switch requirements through pm_vt_switch_required(); however, if any drivers do so, and all of them indicate that VT switches are not required, they will be skipped. In the PRIME case, this is exactly what happens: the Intel driver registers itself as not needing VT switches, and the NVIDIA driver does not register its VT switch requirements one way or the other (the NVIDIA driver *does* need a VT switch on suspend/resume), so the kernel skips the VT switch, resulting in corruption when attempting to restore the NVIDIA X screen.

The NVIDIA driver can be updated to pm_vt_switch_required() (I verified with a quick spot check that doing so restores the desired behavior: more testing will be needed before this change can be made officially); in the meantime, it is possible to work around this issue by adding 'no_console_suspend' to the kernel command line.