[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20251219215344.170852-3-lyude@redhat.com>
Date: Fri, 19 Dec 2025 16:52:03 -0500
From: Lyude Paul <lyude@...hat.com>
To: dri-devel@...ts.freedesktop.org,
nouveau@...ts.freedesktop.org,
linux-kernel@...r.kernel.org
Cc: "Timur Tabi" <ttabi@...dia.com>,
"Dave Airlie" <airlied@...hat.com>,
"Maarten Lankhorst" <maarten.lankhorst@...ux.intel.com>,
"Ben Skeggs" <bskeggs@...dia.com>,
"Simona Vetter" <simona@...ll.ch>,
"Ben Skeggs" <bskeggs@...hat.com>,
"David Airlie" <airlied@...il.com>,
"Thomas Zimmermann" <tzimmermann@...e.de>,
"Maxime Ripard" <mripard@...nel.org>,
"Danilo Krummrich" <dakr@...nel.org>,
"Lyude Paul" <lyude@...hat.com>
Subject: [PATCH 2/2] drm/nouveau/kms/nv50-: Assert we hold nv50_disp->lock in nv50_head_flush_*
Now that we've had one bug that occurred in nouveau as the result of
nv50_head_flush_* being called without the appropriate locks, let's add
some lockdep asserts to make sure this doesn't happen in the future.
Signed-off-by: Lyude Paul <lyude@...hat.com>
---
drivers/gpu/drm/nouveau/dispnv50/head.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/dispnv50/head.c b/drivers/gpu/drm/nouveau/dispnv50/head.c
index 3dd742b4f8232..e32ed1db6c566 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/head.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/head.c
@@ -43,6 +43,9 @@ nv50_head_flush_clr(struct nv50_head *head,
union nv50_head_atom_mask clr = {
.mask = asyh->clr.mask & ~(flush ? 0 : asyh->set.mask),
};
+
+ lockdep_assert_held(&head->disp->mutex);
+
if (clr.crc) nv50_crc_atomic_clr(head);
if (clr.olut) head->func->olut_clr(head);
if (clr.core) head->func->core_clr(head);
@@ -65,6 +68,8 @@ nv50_head_flush_set_wndw(struct nv50_head *head, struct nv50_head_atom *asyh)
void
nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh)
{
+ lockdep_assert_held(&head->disp->mutex);
+
if (asyh->set.view ) head->func->view (head, asyh);
if (asyh->set.mode ) head->func->mode (head, asyh);
if (asyh->set.core ) head->func->core_set(head, asyh);
--
2.52.0
Powered by blists - more mailing lists