drm/vc4: hvs: Ignore atomic_flush if we're disabled
authorMaxime Ripard <maxime@cerno.tech>
Mon, 6 Dec 2021 15:32:10 +0000 (16:32 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:04:34 +0000 (16:04 +0000)
atomic_flush will be called for each CRTC even if they aren't enabled.

The whole code we have there will thus run without a properly affected
channel, which can then result in all sorts of weird behaviour.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_hvs.c

index 4465122..c979d3c 100644 (file)
@@ -686,6 +686,9 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
        u32 __iomem *dlist_start = vc4->hvs->dlist + vc4_state->mm.start;
        u32 __iomem *dlist_next = dlist_start;
 
+       if (vc4_state->assigned_channel == VC4_HVS_CHANNEL_DISABLED)
+               return;
+
        if (debug_dump_regs) {
                DRM_INFO("CRTC %d HVS before:\n", drm_crtc_index(crtc));
                vc4_hvs_dump_state(dev);