From 1dd504da414fd3837b1d0cf82e7bb969345c58a2 Mon Sep 17 00:00:00 2001 From: Chandler Chen Date: Wed, 14 Jun 2023 17:03:58 +0800 Subject: [PATCH] video: rockchip: mpp: fix crash issue when no iommu Signed-off-by: Chandler Chen Change-Id: Ic0a8523fecad460ec129836ab2693ceb0472f0f9 --- drivers/video/rockchip/mpp/mpp_rkvdec2_link.c | 3 ++- drivers/video/rockchip/mpp/mpp_rkvenc2.c | 9 ++++++--- drivers/video/rockchip/mpp/mpp_vepu2.c | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c index eb0e62097460..1176d2886b50 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c @@ -1356,7 +1356,8 @@ int rkvdec2_attach_ccu(struct device *dev, struct rkvdec2_dev *dec) /* set the ccu-domain for current device */ ccu_info = queue->cores[0]->iommu_info; cur_info = dec->mpp.iommu_info; - cur_info->domain = ccu_info->domain; + if (cur_info) + cur_info->domain = ccu_info->domain; mpp_iommu_attach(cur_info); } diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc2.c b/drivers/video/rockchip/mpp/mpp_rkvenc2.c index 1168ef5be0db..20936053221a 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc2.c @@ -2288,8 +2288,10 @@ static int rkvenc_attach_ccu(struct device *dev, struct rkvenc_dev *enc) ccu_info = ccu->main_core->iommu_info; cur_info = enc->mpp.iommu_info; - cur_info->domain = ccu_info->domain; - cur_info->rw_sem = ccu_info->rw_sem; + if (cur_info) { + cur_info->domain = ccu_info->domain; + cur_info->rw_sem = ccu_info->rw_sem; + } mpp_iommu_attach(cur_info); /* increase main core message capacity */ @@ -2467,7 +2469,8 @@ static int rkvenc_core_probe(struct platform_device *pdev) } mpp->session_max_buffers = RKVENC_SESSION_MAX_BUFFERS; enc->hw_info = to_rkvenc_info(mpp->var->hw_info); - mpp->iommu_info->hdl = rkvenc2_iommu_fault_handle; + if (mpp->iommu_info) + mpp->iommu_info->hdl = rkvenc2_iommu_fault_handle; rkvenc_procfs_init(mpp); rkvenc_procfs_ccu_init(mpp); diff --git a/drivers/video/rockchip/mpp/mpp_vepu2.c b/drivers/video/rockchip/mpp/mpp_vepu2.c index 12aef5ebe75b..522cebcafe01 100644 --- a/drivers/video/rockchip/mpp/mpp_vepu2.c +++ b/drivers/video/rockchip/mpp/mpp_vepu2.c @@ -1050,7 +1050,8 @@ static int vepu_attach_ccu(struct device *dev, struct vepu_dev *enc) ccu_info = ccu->main_core->iommu_info; cur_info = enc->mpp.iommu_info; - cur_info->domain = ccu_info->domain; + if (cur_info) + cur_info->domain = ccu_info->domain; mpp_iommu_attach(cur_info); } enc->ccu = ccu;