]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau/kms/nv50-: Assert we hold nv50_disp->lock in nv50_head_flush_*
authorLyude Paul <lyude@redhat.com>
Fri, 19 Dec 2025 21:52:03 +0000 (16:52 -0500)
committerLyude Paul <lyude@redhat.com>
Tue, 13 Jan 2026 22:42:45 +0000 (17:42 -0500)
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.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patch.msgid.link/20251219215344.170852-3-lyude@redhat.com
drivers/gpu/drm/nouveau/dispnv50/head.c

index 3dd742b4f82325b3c215d9a1b1c3f19631eb4e40..e32ed1db6c5661cc17c689c716957140d929cb17 100644 (file)
@@ -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);