Karol Herbst
2023-Oct-11 11:41 UTC
[Nouveau] [PATCH] drm/nouveau/disp: fix DP capable DSM connectors
Just special case DP DSM connectors until we properly figure out how to deal with this. This resolves user regressions on GPUs with such connectors without reverting the original fix. Cc: Lyude Paul <lyude at redhat.com> Cc: stable at vger.kernel.org # 6.4+ Closes: https://gitlab.freedesktop.org/drm/nouveau/-/issues/255 Fixes: 2b5d1c29f6c4 ("drm/nouveau/disp: PIOR DP uses GPIO for HPD, not PMGR AUX interrupts") Signed-off-by: Karol Herbst <kherbst at redhat.com> --- drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c index 46b057fe1412e..3249e5c1c8930 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c @@ -62,6 +62,18 @@ nvkm_uconn_uevent_gpio(struct nvkm_object *object, u64 token, u32 bits) return object->client->event(token, &args, sizeof(args.v0)); } +static bool +nvkm_connector_is_dp_dms(u8 type) +{ + switch (type) { + case DCB_CONNECTOR_DMS59_DP0: + case DCB_CONNECTOR_DMS59_DP1: + return true; + default: + return false; + } +} + static int nvkm_uconn_uevent(struct nvkm_object *object, void *argv, u32 argc, struct nvkm_uevent *uevent) { @@ -101,7 +113,7 @@ nvkm_uconn_uevent(struct nvkm_object *object, void *argv, u32 argc, struct nvkm_ if (args->v0.types & NVIF_CONN_EVENT_V0_UNPLUG) bits |= NVKM_GPIO_LO; if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ) { /* TODO: support DP IRQ on ANX9805 and remove this hack. */ - if (!outp->info.location) + if (!outp->info.location && !nvkm_connector_is_dp_dms(conn->info.type)) return -EINVAL; } -- 2.41.0
Lyude Paul
2023-Oct-12 20:27 UTC
[Nouveau] [PATCH] drm/nouveau/disp: fix DP capable DSM connectors
Reviewed-by: Lyude Paul <lyude at redhat.com> On Wed, 2023-10-11 at 13:41 +0200, Karol Herbst wrote:> Just special case DP DSM connectors until we properly figure out how to > deal with this. > > This resolves user regressions on GPUs with such connectors without > reverting the original fix. > > Cc: Lyude Paul <lyude at redhat.com> > Cc: stable at vger.kernel.org # 6.4+ > Closes: https://gitlab.freedesktop.org/drm/nouveau/-/issues/255 > Fixes: 2b5d1c29f6c4 ("drm/nouveau/disp: PIOR DP uses GPIO for HPD, not PMGR AUX interrupts") > Signed-off-by: Karol Herbst <kherbst at redhat.com> > --- > drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > index 46b057fe1412e..3249e5c1c8930 100644 > --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.c > @@ -62,6 +62,18 @@ nvkm_uconn_uevent_gpio(struct nvkm_object *object, u64 token, u32 bits) > return object->client->event(token, &args, sizeof(args.v0)); > } > > +static bool > +nvkm_connector_is_dp_dms(u8 type) > +{ > + switch (type) { > + case DCB_CONNECTOR_DMS59_DP0: > + case DCB_CONNECTOR_DMS59_DP1: > + return true; > + default: > + return false; > + } > +} > + > static int > nvkm_uconn_uevent(struct nvkm_object *object, void *argv, u32 argc, struct nvkm_uevent *uevent) > { > @@ -101,7 +113,7 @@ nvkm_uconn_uevent(struct nvkm_object *object, void *argv, u32 argc, struct nvkm_ > if (args->v0.types & NVIF_CONN_EVENT_V0_UNPLUG) bits |= NVKM_GPIO_LO; > if (args->v0.types & NVIF_CONN_EVENT_V0_IRQ) { > /* TODO: support DP IRQ on ANX9805 and remove this hack. */ > - if (!outp->info.location) > + if (!outp->info.location && !nvkm_connector_is_dp_dms(conn->info.type)) > return -EINVAL; > } >-- Cheers, Lyude Paul (she/her) Software Engineer at Red Hat
Possibly Parallel Threads
- [PATCH] drm/nouveau/disp: fix use-after-free in error handling of nouveau_connector_create
- [PATCH] drm/nouveau/disp: fix use-after-free in error handling of nouveau_connector_create
- (no subject)
- 2018 ASA Computing/Graphics: Chambers Software Award and Student Paper Competition
- Compiling msm on Fedora Core Linux