]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/vc4: hvs: Print error if we fail an allocation
authorMaxime Ripard <mripard@kernel.org>
Fri, 21 Jun 2024 15:20:34 +0000 (16:20 +0100)
committerDave Stevenson <dave.stevenson@raspberrypi.com>
Mon, 9 Sep 2024 12:02:53 +0000 (13:02 +0100)
We need to allocate a few additional structures when checking our
atomic_state, especially related to hardware SRAM that will hold the
plane descriptors (DLIST) and the current line context (LBM) during
composition.

Since those allocation can fail, let's add some error message in that
case to help debug what goes wrong.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240621152055.4180873-11-dave.stevenson@raspberrypi.com
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/gpu/drm/vc4/vc4_hvs.c
drivers/gpu/drm/vc4/vc4_plane.c

index e37851e13474a70c24b863765e28ca050810c4a8..3a5d9ba3a67ae46a9bc9d30ea8a87e8b96145aad 100644 (file)
@@ -475,8 +475,10 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state)
        ret = drm_mm_insert_node(&vc4->hvs->dlist_mm, &vc4_state->mm,
                                 dlist_count);
        spin_unlock_irqrestore(&vc4->hvs->mm_lock, flags);
-       if (ret)
+       if (ret) {
+               drm_err(dev, "Failed to allocate DLIST entry: %d\n", ret);
                return ret;
+       }
 
        return 0;
 }
index 978433554f3d9ce8e27848cd46641c2f364b1af3..e4fcef11cf6f714c244fa63260d1e8291d4e1c21 100644 (file)
@@ -739,7 +739,8 @@ static void vc4_plane_calc_load(struct drm_plane_state *state)
 
 static int vc4_plane_allocate_lbm(struct drm_plane_state *state)
 {
-       struct vc4_dev *vc4 = to_vc4_dev(state->plane->dev);
+       struct drm_device *drm = state->plane->dev;
+       struct vc4_dev *vc4 = to_vc4_dev(drm);
        struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
        unsigned long irqflags;
        u32 lbm_size;
@@ -765,8 +766,10 @@ static int vc4_plane_allocate_lbm(struct drm_plane_state *state)
                                                 0, 0);
                spin_unlock_irqrestore(&vc4->hvs->mm_lock, irqflags);
 
-               if (ret)
+               if (ret) {
+                       drm_err(drm, "Failed to allocate LBM entry: %d\n", ret);
                        return ret;
+               }
        } else {
                WARN_ON_ONCE(lbm_size != vc4_state->lbm.size);
        }