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.
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.