[PATCH v4 4/6] media: rockchip: Introduce the rkvdec2 driver

Jianfeng Liu liujianfeng1994 at gmail.com
Thu Jun 19 02:19:57 PDT 2025


Hi Detlev,

On Tue, 25 Mar 2025 17:22:20 -0400, Detlev Casanova wrote:

 >+        case RKVDEC2_ALLOC_SRAM:
 >+            virt_addr = (unsigned long)ctx->rcb_bufs[i].cpu;
 >+
 >+            iommu_unmap(rkvdec->iommu_domain, virt_addr, rcb_size);

I'm testing your patch with ffmpeg patched with v4l2-request patches[1], 
and I usually

get kernel panic here. After checking rkvdec->iommu_domain before 
running iommu_unmap,

I can pass fluster ffmpeg v4l2-request test. Here is my patch based on 
your commit:


diff --git a/drivers/media/platform/rockchip/rkvdec2/rkvdec2.c 
b/drivers/media/platform/rockchip/rkvdec2/rkvdec2.c
index 75768561399..122bcdcebd4 100644
--- a/drivers/media/platform/rockchip/rkvdec2/rkvdec2.c
+++ b/drivers/media/platform/rockchip/rkvdec2/rkvdec2.c
@@ -681,8 +681,8 @@ static void rkvdec2_free_rcb(struct rkvdec2_ctx *ctx)
                 switch (ctx->rcb_bufs[i].type) {
                 case RKVDEC2_ALLOC_SRAM:
                         virt_addr = (unsigned long)ctx->rcb_bufs[i].cpu;
-
-                       iommu_unmap(rkvdec->iommu_domain, virt_addr, 
rcb_size);
+                       if (rkvdec->iommu_domain)
+ iommu_unmap(rkvdec->iommu_domain, virt_addr, rcb_size);
                         gen_pool_free(ctx->dev->sram_pool, virt_addr, 
rcb_size);
                         break;
                 case RKVDEC2_ALLOC_DMA:


[1] https://github.com/amazingfate/FFmpeg/commits/n6.1.1-new-patches/


Best regards,

Jianfeng




More information about the Linux-rockchip mailing list