[PATCH] drm/msm/dpu: add the SSPP rec0/rec1 blocks to the snapshot

From: Joonhoe Kim

Date: Wed Oct 07 2026 - 09:03:22 EST


On DPU 13 the SSPP block is only 0x84 long and the fetch registers
(source address, size, format, multirect) live in the rec0/rec1
sub-blocks at 0x1000 and 0x3000. The snapshot dumps the SSPP block and
its scaler and CSC sub-blocks, but not rec0/rec1, so the plane fetch
state is missing from the devcoredump and from debugfs dri/N/kms.

Add the rec0/rec1 sub-blocks to the snapshot.

Tested on a Lenovo Legion Tab Y700 gen 5 (SM8850).

Fixes: 688c7734002a ("drm/msm/dpu: Add Kaanapali SSPP sub-block support")
Assisted-by: LLM
Signed-off-by: Joonhoe Kim <26rote@xxxxxxxxx>
---
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index da3556eb6ecc..dba8a07d34bb 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -1006,6 +1006,20 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
base + cat->sspp[i].sblk->csc_blk.base,
"%s_%s", cat->sspp[i].name,
cat->sspp[i].sblk->csc_blk.name);
+
+ if (cat->sspp[i].sblk && cat->sspp[i].sblk->sspp_rec0_blk.len > 0)
+ msm_disp_snapshot_add_block(disp_state,
+ cat->sspp[i].sblk->sspp_rec0_blk.len,
+ base + cat->sspp[i].sblk->sspp_rec0_blk.base,
+ "%s_%s", cat->sspp[i].name,
+ cat->sspp[i].sblk->sspp_rec0_blk.name);
+
+ if (cat->sspp[i].sblk && cat->sspp[i].sblk->sspp_rec1_blk.len > 0)
+ msm_disp_snapshot_add_block(disp_state,
+ cat->sspp[i].sblk->sspp_rec1_blk.len,
+ base + cat->sspp[i].sblk->sspp_rec1_blk.base,
+ "%s_%s", cat->sspp[i].name,
+ cat->sspp[i].sblk->sspp_rec1_blk.name);
}

/* dump LM sub-blocks HW regs info */

base-commit: 6375e61c01e93e35ee7acd336a689ac1fae4b509
--
2.43.0