linux/drivers/gpu/drm/nouveau/dispnv50
Lyude Paul ed22eb56f2 drm/nouveau/dispnv50: Fix runtime PM ref tracking for non-blocking modesets
This is something that got noticed a while ago back when I was fixing a
large number of runtime PM related issues in nouveau, but never got
fixed:

https://patchwork.freedesktop.org/series/46815/#rev7

It's not safe to iterate the entire list of CRTCs in
nv50_disp_atomic_commit(), as we could be doing a non-blocking modeset
on one CRTC in parallel with one or more other CRTCs. Likewise, this
means it's also not safe to do so in order to track runtime PM state.
While this code is certainly wrong, so far the only issues I've seen
this cause in the wild is the occasional PM ref unbalance after an
atomic check failure + module reloading (since the PCI device will
outlive nouveau in such scenarios).

So, do this far more elegantly: grab a runtime PM ref across the modeset
and commit tail, then grab/put references for each CRTC enable/disable.
This also ends up being much simpler then the previous broken solution
we had.

Finally, since we've removed all it's users: get rid of
nouveau_drm->have_disp_power_ref.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2019-08-23 12:55:34 +10:00
..
atom.h drm/nouveau/kms/gv100-: attach pixel blend mode property to planes 2019-08-23 12:55:33 +10:00
base507c.c drm/nouveau/kms/nv50-: add fp16 scanout support 2019-08-23 12:55:31 +10:00
base827c.c drm/nouveau/kms/nv50-: add fp16 scanout support 2019-08-23 12:55:31 +10:00
base907c.c drm/nouveau/kms/gv100-: implement csc + enable modern colour managment properties 2019-08-23 12:55:32 +10:00
base917c.c drm/nouveau/kms/nv50-: add fp16 scanout support 2019-08-23 12:55:31 +10:00
base.c drm/nouveau/kms/gk104-: add support for [XA]2R10G10B10 formats 2018-05-18 15:01:30 +10:00
base.h drm/nouveau/kms/nv50-: initial overlay support 2018-05-18 15:01:31 +10:00
core507d.c drm/nouveau/kms/nv50-: simplify tracking of channel interlocks 2018-05-18 15:01:29 +10:00
core827d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
core907d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
core917d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
core.c drm/nouveau/disp/tu102: rename implementation from tu104 2019-02-20 08:59:58 +10:00
core.h drm/nouveau/kms/tu104: initial support 2018-12-11 15:37:55 +10:00
corec37d.c drm/nouveau/kms/gv100: allow windows to use PACKED8BPP formats 2019-08-23 12:55:31 +10:00
corec57d.c drm/nouveau/kms/tu104: initial support 2018-12-11 15:37:55 +10:00
curs507a.c drm/nouveau/kms/nv50-: cursors always use core channel vram ctxdma 2018-06-19 10:38:26 +10:00
curs907a.c drm/nouveau/kms/nv50-: simplify tracking of channel interlocks 2018-05-18 15:01:29 +10:00
curs.c drm/nouveau/disp/tu102: rename implementation from tu104 2019-02-20 08:59:58 +10:00
curs.h drm/nouveau/kms/gv100: initial support 2018-05-18 15:01:46 +10:00
cursc37a.c drm/nouveau/kms/gv100: initial support 2018-05-18 15:01:46 +10:00
dac507d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
dac907d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
disp.c drm/nouveau/dispnv50: Fix runtime PM ref tracking for non-blocking modesets 2019-08-23 12:55:34 +10:00
disp.h drm/nouveau/kms/gv100-: fix spurious window immediate interlocks 2019-05-14 16:58:05 +10:00
head507d.c drm/nouveau/kms/nv50-: allow more flexibility with lut formats 2018-12-11 15:37:49 +10:00
head827d.c drm/nouveau/kms/gk104-: support additional cursor sizes 2018-05-18 15:01:30 +10:00
head907d.c drm/nouveau/kms/nv50-: allow more flexibility with lut formats 2018-12-11 15:37:49 +10:00
head917d.c drm/nouveau/kms/gv100: initial support 2018-05-18 15:01:46 +10:00
head.c drm/nouveau/kms/nv50-: create primary plane before overlay planes 2019-08-23 12:55:33 +10:00
head.h drm/nouveau/kms/tu104: initial support 2018-12-11 15:37:55 +10:00
headc37d.c drm/nouveau/kms/tu104: initial support 2018-12-11 15:37:55 +10:00
headc57d.c drm/nouveau/kms/tu104: initial support 2018-12-11 15:37:55 +10:00
Kbuild drm/nouveau: fix bogus GPL-2 license header 2019-07-19 16:26:51 +10:00
lut.c drm/nouveau/kms/nv50-: allow more flexibility with lut formats 2018-12-11 15:37:49 +10:00
lut.h drm/nouveau/kms/nv50-: allow more flexibility with lut formats 2018-12-11 15:37:49 +10:00
oimm507b.c drm/nouveau/kms/nv50-: initial overlay support 2018-05-18 15:01:31 +10:00
oimm.c drm/nouveau/kms/nv50-: split each resource type into their own source files 2018-05-18 15:01:28 +10:00
oimm.h drm/nouveau/kms/nv50-: split each resource type into their own source files 2018-05-18 15:01:28 +10:00
ovly507e.c drm/nouveau/kms/nv50-: remove overlay alpha formats 2019-08-23 12:55:32 +10:00
ovly827e.c drm/nouveau/kms/nv50-: remove overlay alpha formats 2019-08-23 12:55:32 +10:00
ovly907e.c drm/nouveau/kms/nv50-: remove overlay alpha formats 2019-08-23 12:55:32 +10:00
ovly917e.c drm/nouveau/kms/nv50-: remove overlay alpha formats 2019-08-23 12:55:32 +10:00
ovly.c drm/nouveau/kms/nv50-: initial overlay support 2018-05-18 15:01:31 +10:00
ovly.h drm/nouveau/kms/nv50-: initial overlay support 2018-05-18 15:01:31 +10:00
pior507d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
sor507d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
sor907d.c drm/nouveau/kms/nv50-: split core implementation by hardware class 2018-05-18 15:01:28 +10:00
sorc37d.c drm/nouveau/kms/gv100: initial support 2018-05-18 15:01:46 +10:00
wimm.c drm/nouveau/disp/tu102: rename implementation from tu104 2019-02-20 08:59:58 +10:00
wimm.h drm/nouveau/kms/gv100: initial support 2018-05-18 15:01:46 +10:00
wimmc37b.c drm/nouveau/kms/gv100-: fix spurious window immediate interlocks 2019-05-14 16:58:05 +10:00
wndw.c drm/nouveau/kms/gv100-: attach pixel blend mode property to planes 2019-08-23 12:55:33 +10:00
wndw.h drm/nouveau/kms/gv100-: add support for plane zpos property 2019-08-23 12:55:33 +10:00
wndwc37e.c drm/nouveau/kms/gv100-: attach pixel blend mode property to planes 2019-08-23 12:55:33 +10:00
wndwc57e.c drm/nouveau/kms/gv100-: add support for plane zpos property 2019-08-23 12:55:33 +10:00