linux/drivers/gpu/drm/nouveau
Mario Kleiner ff683df7bf 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>
2016-02-17 14:19:06 +10:00
..
dispnv04 drm/nouveau: Constify function pointer structs 2015-12-15 13:47:45 +01:00
include drm/nouveau/perf: add fields for pci speed and width and use it for the pstates 2016-01-11 11:30:22 +10:00
nvif drm/nouveau/nvif: device time mthd 2015-08-28 12:40:33 +10:00
nvkm asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
Kbuild drm/nouveau/sysfs: remove pstate interface 2016-01-11 11:28:26 +10:00
Kconfig drm/nouveau: merge nouveau_platform.ko into nouveau.ko 2015-01-22 12:15:09 +10:00
nouveau_abi16.c drm/nouveau/nvif: modify nvif_unvers/nvif_unpack macros to be more obvious 2016-01-11 11:17:40 +10:00
nouveau_abi16.h drm/nouveau/abi16: implement limited interoperability with usif/nvif 2015-11-03 15:02:18 +10:00
nouveau_acpi.c drm/nouveau/bios: return actual size of the buffer retrieved via _ROM 2015-11-25 15:31:21 +10:00
nouveau_acpi.h drm/nouveau/device: remove pci/platform_device from common struct 2015-08-28 12:40:49 +10:00
nouveau_backlight.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nouveau_bios.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nouveau_bios.h
nouveau_bo.c drm: Remove __OS_HAS_AGP 2015-09-30 10:44:48 +02:00
nouveau_bo.h drm/nouveau: finalise nvkm namespace switch (no binary change) 2015-01-22 12:18:07 +10:00
nouveau_chan.c drm/nouveau/nvif: split out ctxdma interface definitions 2016-01-11 11:17:40 +10:00
nouveau_chan.h drm/nouveau: remove unnecessary usage of object handles 2015-11-03 15:02:18 +10:00
nouveau_connector.c drm/nouveau/kms: take mode_config mutex in connector hotplug path 2016-01-11 11:29:36 +10:00
nouveau_connector.h drm/nouveau: finalise nvkm namespace switch (no binary change) 2015-01-22 12:18:07 +10:00
nouveau_crtc.h drm/nouveau: Use private save/restore hooks for CRTCs 2015-12-08 16:13:49 +01:00
nouveau_debugfs.c drm/nouveau/debugfs: add copy of sysfs pstate interface ported to debugfs 2016-01-11 11:28:25 +10:00
nouveau_debugfs.h drm: nouveau: fix nouveau_debugfs_init prototype 2016-01-14 07:56:41 +10:00
nouveau_display.c drm/nouveau/display: Enable vblank irqs after display engine is on again. 2016-02-17 14:19:06 +10:00
nouveau_display.h drm: Pass the user drm_mode_fb_cmd2 as const to .fb_create() 2015-11-24 11:47:38 +01:00
nouveau_dma.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nouveau_dma.h drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nouveau_dp.c drm/nouveau/i2c: transition pad/ports away from being based on nvkm_object 2015-08-28 12:40:29 +10:00
nouveau_drm.c drm/nouveau/sysfs: remove pstate interface 2016-01-11 11:28:26 +10:00
nouveau_drm.h drm/nouveau/sysfs: remove pstate interface 2016-01-11 11:28:26 +10:00
nouveau_encoder.h drm: Constify drm_encoder_slave_funcs 2015-12-15 13:41:17 +01:00
nouveau_fbcon.c drm/nouveau/fbcon: take runpm reference when userspace has an open fd 2015-10-12 13:54:40 +10:00
nouveau_fbcon.h drm: Remove unused fbdev_list members 2015-11-24 11:41:52 +01:00
nouveau_fence.c drm/nouveau/nvif: split out fifo interface definitions 2016-01-11 11:17:40 +10:00
nouveau_fence.h drm/nouveau/sw: turn flip completion into an event 2015-08-28 12:40:38 +10:00
nouveau_gem.c drm/nouveau/abi16: remove unused argument from nouveau_abi16_get() 2015-11-03 15:02:18 +10:00
nouveau_gem.h
nouveau_hwmon.c drm/nouveau/nouveau/perfmon: add interface files for current core voltage 2016-01-11 11:28:26 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_nvif.c drm/nouveau/client: tidy ctor/dtor interfaces 2015-08-28 12:40:30 +10:00
nouveau_platform.c drm/nouveau/gk20a: Add MODULE_FIRMWARE for gk20a 2016-01-11 11:17:40 +10:00
nouveau_platform.h drm/nouveau/tegra: merge platform setup from nouveau drm 2015-08-28 12:40:49 +10:00
nouveau_prime.c
nouveau_reg.h drm/nouveau/sw: rename from software (no binary change) 2015-01-22 12:17:47 +10:00
nouveau_sgdma.c drm/nouveau: finalise nvkm namespace switch (no binary change) 2015-01-22 12:18:07 +10:00
nouveau_ttm.c nouveau: don't call pci_dma_supported 2015-11-10 16:32:11 -08:00
nouveau_ttm.h
nouveau_usif.c drm/nouveau/nvif: modify nvif_unvers/nvif_unpack macros to be more obvious 2016-01-11 11:17:40 +10:00
nouveau_usif.h
nouveau_vga.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nouveau_vga.h
nv04_fbcon.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nv04_fence.c drm/nouveau/nvif: split out nvsw interface definitons 2016-01-11 11:17:40 +10:00
nv10_fence.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nv10_fence.h
nv17_fence.c drm/nouveau/nvif: split out ctxdma interface definitions 2016-01-11 11:17:40 +10:00
nv50_display.c drm/nouveau/nvif: split out ctxdma interface definitions 2016-01-11 11:17:40 +10:00
nv50_display.h
nv50_fbcon.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nv50_fence.c drm/nouveau/nvif: split out ctxdma interface definitions 2016-01-11 11:17:40 +10:00
nv84_fence.c drm/nouveau/fifo: convert user classes to new-style nvkm_object 2015-08-28 12:40:40 +10:00
nvc0_fbcon.c drm/nouveau/nvif: simplify and tidy library interfaces 2015-08-28 12:40:32 +10:00
nvc0_fence.c