]>
Commit | Line | Data |
---|---|---|
37554d48 SL |
1 | From b85e7940ce76fc47888bc63c5582c2cd05cb05f3 Mon Sep 17 00:00:00 2001 |
2 | From: Ben Skeggs <bskeggs@redhat.com> | |
3 | Date: Wed, 8 May 2019 14:54:34 +1000 | |
4 | Subject: drm/nouveau/kms/gf119-gp10x: push HeadSetControlOutputResource() mthd | |
5 | when encoders change | |
6 | ||
7 | [ Upstream commit a0b694d0af21c9993d1a39a75fd814bd48bf7eb4 ] | |
8 | ||
9 | HW has error checks in place which check that pixel depth is explicitly | |
10 | provided on DP, while HDMI has a "default" setting that we use. | |
11 | ||
12 | In multi-display configurations with identical modelines, but different | |
13 | protocols (HDMI + DP, in this case), it was possible for the DP head to | |
14 | get swapped to the head which previously drove the HDMI output, without | |
15 | updating HeadSetControlOutputResource(), triggering the error check and | |
16 | hanging the core update. | |
17 | ||
18 | Reported-by: Lyude Paul <lyude@redhat.com> | |
19 | Signed-off-by: Ben Skeggs <bskeggs@redhat.com> | |
20 | Signed-off-by: Sasha Levin <sashal@kernel.org> | |
21 | --- | |
22 | drivers/gpu/drm/nouveau/dispnv50/head.c | 2 +- | |
23 | 1 file changed, 1 insertion(+), 1 deletion(-) | |
24 | ||
25 | diff --git a/drivers/gpu/drm/nouveau/dispnv50/head.c b/drivers/gpu/drm/nouveau/dispnv50/head.c | |
26 | index 4f57e5379796..d81a99bb2ac3 100644 | |
27 | --- a/drivers/gpu/drm/nouveau/dispnv50/head.c | |
28 | +++ b/drivers/gpu/drm/nouveau/dispnv50/head.c | |
29 | @@ -306,7 +306,7 @@ nv50_head_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *state) | |
30 | asyh->set.or = head->func->or != NULL; | |
31 | } | |
32 | ||
33 | - if (asyh->state.mode_changed) | |
34 | + if (asyh->state.mode_changed || asyh->state.connectors_changed) | |
35 | nv50_head_atomic_check_mode(head, asyh); | |
36 | ||
37 | if (asyh->state.color_mgmt_changed || | |
38 | -- | |
39 | 2.20.1 | |
40 |