On 21.01.2016 19:08, Daniel Vetter wrote:
In
commit 9cba5efab5a8145ae6c52ea273553f069c294482 Author: Mario Kleiner mario.kleiner.de@gmail.com Date: Tue Jul 29 02:36:44 2014 +0200
drm/nouveau: Dis/Enable vblank irqs during suspend/resume
drm_vblank_on/off calls where added around suspend/resume to make sure vblank stay doesn't go boom over that transition. But nouveau already used drm_vblank_pre/post_modeset over modesets. Instead use drm_vblank_on/off everyhwere. The slight change here is that after _off drm_vblank_get will refuse to work right away, but nouveau doesn't seem to depend upon that anywhere outside of the pageflip paths.
The longer-term plan here is to switch all kms drivers to drm_vblank_on/off so that common code like pending event cleanup can be done there, while drm_vblank_pre/post_modeset will be purely drm internal for the old UMS ioctl.
Note that the drm_vblank_off still seems required in the suspend path since nouveau doesn't explicitly disable crtcs. But on the resume side drm_helper_resume_force_mode should end up calling drm_vblank_on through the nouveau crtc hooks already. Hence remove the call in the resume code.
v2: Don't forget about nv50+, reported by Mario.
I may be blind, but I can't see the DRI2 code in xf86-video-nouveau dealing with DRM_IOCTL_WAIT_VBLANK returning an error during DPMS off / modeset. Does it?
If not, AFAICT it would result in the xserver DRI2 code returning protocol errors to clients, which I'm not sure they'll survive.