These patches were generated from: https://github.com/raspberrypi/linux/commits/rpi-6.12.y With the following command: git format-patch -N v6.12.27..HEAD (HEAD -> 8d3206ee456a5ecdf9ddbfd8e5e231e4f0cd716e) Exceptions: - (def)configs patches - github workflows patches - applied & reverted patches - readme patches - wireless patches Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
48 lines
1.8 KiB
Diff
48 lines
1.8 KiB
Diff
From 3490eb89026f9c7d9c471a0377c52273708c3f73 Mon Sep 17 00:00:00 2001
|
|
From: Maxime Ripard <mripard@kernel.org>
|
|
Date: Fri, 21 Jun 2024 16:20:51 +0100
|
|
Subject: [PATCH] drm/vc4: hvs: Rework LBM alignment
|
|
|
|
With the introduction of the support for BCM2712, the check of whether
|
|
we're running on vc5 or not to compute the LBM alignment requirement
|
|
doesn't work anymore.
|
|
|
|
Moreover, the LBM size will need to be computed in words for the
|
|
BCM2712, while we've had sizes in bytes so far.
|
|
|
|
Aligning on either 64 or 32 words is thus fairly harmful on BCM2712, so
|
|
let's just explicitly align the size when needed, and then call
|
|
drm_mm_insert_node_generic() with an alignment of 1.
|
|
|
|
Signed-off-by: Maxime Ripard <mripard@kernel.org>
|
|
Reviewed-by: Maxime Ripard <mripard@kernel.org>
|
|
Link: https://patchwork.freedesktop.org/patch/msgid/20240621152055.4180873-28-dave.stevenson@raspberrypi.com
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_plane.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
|
@@ -756,6 +756,11 @@ static int vc4_plane_allocate_lbm(struct
|
|
if (!lbm_size)
|
|
return 0;
|
|
|
|
+ if (vc4->gen == VC4_GEN_5)
|
|
+ lbm_size = ALIGN(lbm_size, 64);
|
|
+ else if (vc4->gen == VC4_GEN_4)
|
|
+ lbm_size = ALIGN(lbm_size, 32);
|
|
+
|
|
drm_dbg_driver(drm, "[PLANE:%d:%s] LBM Allocation Size: %u\n",
|
|
plane->base.id, plane->name, lbm_size);
|
|
|
|
@@ -771,8 +776,7 @@ static int vc4_plane_allocate_lbm(struct
|
|
spin_lock_irqsave(&vc4->hvs->mm_lock, irqflags);
|
|
ret = drm_mm_insert_node_generic(&vc4->hvs->lbm_mm,
|
|
&vc4_state->lbm,
|
|
- lbm_size,
|
|
- vc4->gen == VC4_GEN_5 ? 64 : 32,
|
|
+ lbm_size, 1,
|
|
0, 0);
|
|
spin_unlock_irqrestore(&vc4->hvs->mm_lock, irqflags);
|
|
|