]> git.baikalelectronics.ru Git - kernel.git/commit
drm/nouveau/display: Enable vblank irqs after display engine is on again.
authorMario Kleiner <mario.kleiner.de@gmail.com>
Fri, 12 Feb 2016 19:30:32 +0000 (20:30 +0100)
committerDave Airlie <airlied@redhat.com>
Wed, 17 Feb 2016 04:19:06 +0000 (14:19 +1000)
commit26d64315695ccd1baede20f00a8b54655bcddc5d
treebd445b70fd65ea05debbafbb2baacc82de9464e2
parent57e87c74884726eacc866d1fa9a42254e114e7c3
drm/nouveau/display: Enable vblank irqs after display engine is on again.

In the display resume path, move the calls to drm_vblank_on()
after the point when the display engine is running again.

Since changes were made to drm_update_vblank_count() in Linux 4.4+
to emulate hw vblank counters via vblank timestamping, the function
drm_vblank_on() now needs working high precision vblank timestamping
and therefore working scanout position queries at time of call.
These don't work before the display engine gets restarted, causing
miscalculation of vblank counter increments and thereby large forward
jumps in vblank count at display resume. These jumps can cause client
hangs on resume, or desktop hangs in the case of composited desktops.

Fix this Linux 4.4 regression by reordering calls accordingly.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: <stable@vger.kernel.org> # 4.4+
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: ville.syrjala@linux.intel.com
Cc: daniel.vetter@ffwll.ch
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/nouveau/nouveau_display.c