linux-stable/drivers/gpu/drm/nouveau
Lyude Paul 0e3a6e86d4 drm/nouveau/kms/gv100-: Re-set LUT after clearing for modesets
[ Upstream commit f287d3d197 ]

While certain modeset operations on gv100+ need us to temporarily
disable the LUT, we make the mistake of sometimes neglecting to
reprogram the LUT after such modesets. In particular, moving a head from
one encoder to another seems to trigger this quite often. GV100+ is very
picky about having a LUT in most scenarios, so this causes the display
engine to hang with the following error code:

disp: chid 1 stat 00005080 reason 5 [INVALID_STATE] mthd 0200 data
00000001 code 0000002d)

So, fix this by always re-programming the LUT if we're clearing it in a
state where the wndw is still visible, and has a XLUT handle programmed.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Fixes: facaed62b4 ("drm/nouveau/kms/gv100: initial support")
Cc: <stable@vger.kernel.org> # v4.18+
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-28 16:38:55 +01:00
..
dispnv04 drm/nouveau: Stop using drm_crtc_force_disable 2019-04-05 22:33:15 +02:00
dispnv50 drm/nouveau/kms/gv100-: Re-set LUT after clearing for modesets 2020-02-28 16:38:55 +01:00
include drm/nouveau/i2c: Disable i2c bus access after ->fini() 2019-06-09 09:17:18 +02:00
nvif treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
nvkm drm/nouveau/disp/nv50-: prevent oops when no channel method map provided 2020-02-24 08:34:52 +01:00
Kbuild drm/nouveau/kms/nv50-: move code underneath dispnv50/ 2018-05-18 15:01:26 +10:00
Kconfig drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v3) 2019-06-19 08:17:58 +02:00
nouveau_abi16.c drm/nouveau: fix missing break in switch statement 2020-01-27 14:50:26 +01:00
nouveau_abi16.h
nouveau_acpi.c drm/nouveau: fix nouveau_dsm_get_client_id()'s return type 2018-05-18 17:09:46 +10:00
nouveau_acpi.h
nouveau_backlight.c drm/nouveau: Check backlight IDs are >= 0, not > 0 2018-11-21 09:19:25 +01:00
nouveau_bios.c
nouveau_bios.h
nouveau_bo.c drm/nouveau/ce/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_bo.h
nouveau_chan.c drm/nouveau/fifo/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_chan.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_connector.c drm/nouveau: fix memory leak in nouveau_conn_reset() 2019-08-06 19:06:53 +02:00
nouveau_connector.h drm/nouveau: Move the declaration of struct nouveau_conn_atom up a bit 2020-01-09 10:18:57 +01:00
nouveau_crtc.h
nouveau_debugfs.c drm/nouveau/debugfs: Fix check of pm_runtime_get_sync failure 2019-04-20 09:15:59 +02:00
nouveau_debugfs.h
nouveau_display.c drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload 2018-09-07 06:54:27 +10:00
nouveau_display.h drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload 2018-09-07 06:54:27 +10:00
nouveau_dma.c drm/nouveau/fifo/gv100: initial support 2018-05-18 15:01:46 +10:00
nouveau_dma.h drm/nouveau/drm/nv50-: remove allocation of sw class 2018-05-18 15:01:26 +10:00
nouveau_dp.c
nouveau_drm.c drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v3) 2019-06-19 08:17:58 +02:00
nouveau_drv.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_encoder.h drm/nouveau/kms/nv50: handle SetControlOutputResource from head 2018-05-18 15:01:28 +10:00
nouveau_fbcon.c drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests 2018-09-07 06:54:26 +10:00
nouveau_fbcon.h drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests 2018-09-07 06:54:26 +10:00
nouveau_fence.c drm/nouveau: Fix copy-paste error in nouveau_fence_wait_uevent_handler 2020-02-24 08:34:47 +01:00
nouveau_fence.h drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nouveau_gem.c BackMerge v4.18-rc7 into drm-next 2018-07-30 10:39:22 +10:00
nouveau_gem.h
nouveau_hwmon.c drm/nouveau/hwmon: potential uninitialized variables 2018-07-16 18:06:29 +10:00
nouveau_hwmon.h
nouveau_ioc32.c
nouveau_ioctl.h
nouveau_led.c
nouveau_led.h
nouveau_mem.c
nouveau_mem.h
nouveau_nvif.c
nouveau_platform.c drm/nouveau: Replace drm_dev_unref with drm_dev_put 2018-07-16 18:06:30 +10:00
nouveau_platform.h
nouveau_prime.c
nouveau_reg.h
nouveau_sgdma.c
nouveau_ttm.c drm/nouveau/drm/ttm: Remove set but not used variable 'mem' 2020-02-24 08:34:48 +01:00
nouveau_ttm.h
nouveau_usif.c
nouveau_usif.h
nouveau_vga.c drm/nouveau: Remove useless poll_disable() call in switcheroo_set_state() 2018-09-07 06:54:26 +10:00
nouveau_vga.h
nouveau_vmm.c drm/nouveau/gem: attach fences to VMAs to track GPU usage 2018-05-18 15:01:26 +10:00
nouveau_vmm.h drm/nouveau/gem: attach fences to VMAs to track GPU usage 2018-05-18 15:01:26 +10:00
nv04_fbcon.c
nv04_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv10_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv10_fence.h
nv17_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv50_display.h drm/nouveau/kms/nv50-: split each resource type into their own source files 2018-05-18 15:01:28 +10:00
nv50_fbcon.c
nv50_fence.c drm/nouveau/fifo: support channel count query 2018-05-18 15:01:21 +10:00
nv84_fence.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
nvc0_fbcon.c
nvc0_fence.c