| From 6dcc5a09f09ab807a779f543e312be0d62e1d394 Mon Sep 17 00:00:00 2001 |
| From: Lyude Paul <lyude@redhat.com> |
| Date: Fri, 13 Sep 2019 18:03:50 -0400 |
| Subject: [PATCH] drm/nouveau/kms/nv50-: Don't create MSTMs for eDP connectors |
| |
| commit 698c1aa9f83b618de79e9e5e19a58f70a4a6ae0f upstream. |
| |
| On the ThinkPad P71, we have one eDP connector exposed along with 5 DP |
| connectors, resulting in a total of 11 TMDS encoders. Since the GPU on |
| this system is also capable of MST, we create an additional 4 fake MST |
| encoders for each DP port. Unfortunately, we also do this for the eDP |
| port as well, resulting in: |
| |
| 1 eDP port: +1 TMDS encoder |
| +4 DPMST encoders |
| 5 DP ports: +2 TMDS encoders |
| +4 DPMST encoders |
| *5 ports |
| == 35 encoders |
| |
| Which breaks things, since DRM has a hard coded limit of 32 encoders. |
| So, fix this by not creating MSTMs for any eDP connectors. This brings |
| us down to 31 encoders, although we can do better. |
| |
| This fixes driver probing for nouveau on the ThinkPad P71. |
| |
| Signed-off-by: Lyude Paul <lyude@redhat.com> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Ben Skeggs <bskeggs@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c |
| index bdaf5ffd2504..92bd89697d18 100644 |
| --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c |
| +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c |
| @@ -1597,7 +1597,8 @@ nv50_sor_create(struct drm_connector *connector, struct dcb_output *dcbe) |
| nv_encoder->aux = aux; |
| } |
| |
| - if ((data = nvbios_dp_table(bios, &ver, &hdr, &cnt, &len)) && |
| + if (nv_connector->type != DCB_CONNECTOR_eDP && |
| + (data = nvbios_dp_table(bios, &ver, &hdr, &cnt, &len)) && |
| ver >= 0x40 && (nvbios_rd08(bios, data + 0x08) & 0x04)) { |
| ret = nv50_mstm_new(nv_encoder, &nv_connector->aux, 16, |
| nv_connector->base.base.id, |
| -- |
| 2.7.4 |
| |