]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/vc4: hvs: Remove incorrect limit from hvs_dlist debugfs function
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Fri, 21 Jun 2024 15:20:42 +0000 (16:20 +0100)
committerDave Stevenson <dave.stevenson@raspberrypi.com>
Mon, 9 Sep 2024 12:02:53 +0000 (13:02 +0100)
The debugfs function to dump dlists aborted at 256 bytes,
when actually the dlist memory is generally significantly
larger but varies based on SoC.

We already have the correct limit in __vc4_hvs_alloc, so
store it for use in the debugfs dlist function.

Fixes: c6dac00340fc ("drm/vc4: hvs: Add debugfs node that dumps the current display lists")
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240621152055.4180873-19-dave.stevenson@raspberrypi.com
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/gpu/drm/vc4/vc4_drv.h
drivers/gpu/drm/vc4/vc4_hvs.c

index 717fd1140561af98ad09109b5bb50799283537ae..6908b36d595398b1af5696fc03708c88c5a13984 100644 (file)
@@ -315,6 +315,7 @@ struct vc4_hvs {
        struct platform_device *pdev;
        void __iomem *regs;
        u32 __iomem *dlist;
+       unsigned int dlist_mem_size;
 
        struct clk *core_clk;
 
index bdc70b62905452b7cc77a704f2a5deaa9c20eae9..66163046986c4909a4663efdb31ed1b1b4c669a7 100644 (file)
@@ -110,6 +110,7 @@ static int vc4_hvs_debugfs_dlist(struct seq_file *m, void *data)
        struct vc4_dev *vc4 = to_vc4_dev(dev);
        struct vc4_hvs *hvs = vc4->hvs;
        struct drm_printer p = drm_seq_file_printer(m);
+       unsigned int dlist_mem_size = hvs->dlist_mem_size;
        unsigned int next_entry_start;
        unsigned int i, j;
        u32 dlist_word, dispstat;
@@ -126,7 +127,7 @@ static int vc4_hvs_debugfs_dlist(struct seq_file *m, void *data)
                drm_printf(&p, "HVS chan %u:\n", i);
                next_entry_start = 0;
 
-               for (j = HVS_READ(SCALER_DISPLISTX(i)); j < 256; j++) {
+               for (j = HVS_READ(SCALER_DISPLISTX(i)); j < dlist_mem_size; j++) {
                        dlist_word = readl((u32 __iomem *)vc4->hvs->dlist + j);
                        drm_printf(&p, "dlist: %02d: 0x%08x\n", j,
                                   dlist_word);
@@ -816,9 +817,10 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4, struct platform_device *pde
         * our 16K), since we don't want to scramble the screen when
         * transitioning from the firmware's boot setup to runtime.
         */
+       hvs->dlist_mem_size = (SCALER_DLIST_SIZE >> 2) - HVS_BOOTLOADER_DLIST_END;
        drm_mm_init(&hvs->dlist_mm,
                    HVS_BOOTLOADER_DLIST_END,
-                   (SCALER_DLIST_SIZE >> 2) - HVS_BOOTLOADER_DLIST_END);
+                   hvs->dlist_mem_size);
 
        /* Set up the HVS LBM memory manager.  We could have some more
         * complicated data structure that allowed reuse of LBM areas