Message ID | 20230411093144.2690-1-yong.wu@mediatek.com |
---|---|
Headers | show |
Series | Adjust the dma-ranges for MTK IOMMU | expand |
Il 11/04/23 11:31, Yong Wu ha scritto: > In order to simplify the masters to set their respective dma masks, MTK > IOMMU helps to centralize the processing. Because all the dma ranges is > set in IOMMU, IOMMU knows well the dma mask requirements of masters. After > this patch, the masters code does not need care > dma-ranges/dma_mask related information. > > Cc: Bin Liu <bin.liu@mediatek.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: kyrie wu <kyrie.wu@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Il 11/04/23 11:31, Yong Wu ha scritto: > In order to simplify the masters to set their respective dma masks, MTK > IOMMU helps to centralize the processing. Because all the dma ranges is > set in IOMMU, IOMMU knows well the dma mask requirements of masters. After > this patch, the masters(codec here) code does not need care > dma-ranges/dma_mask related information. > > Cc: Tiffany Lin <tiffany.lin@mediatek.com> > Cc: Andrew-CT Chen <andrew-ct.chen@mediatek.com> > Cc: Yunfei Dong <yunfei.dong@mediatek.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: irui wang <irui.wang@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Il 11/04/23 11:31, Yong Wu ha scritto: > MediaTek iommu arranges dma ranges for all the masters, this patch is to > help them set dma mask. This is to avoid each master setting their own > mask, but also to avoid a real issue, such as JPEG uses > "mediatek,mtk-jpgenc" for 2701/8183/8186/8188, then JPEG could ignore its > different dma_mask in different SoC to achieve common code. > > Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
On 11/04/2023 11:31, Yong Wu wrote: > In order to simplify the masters to set their respective dma masks, MTK > IOMMU helps to centralize the processing. Because all the dma ranges is > set in IOMMU, IOMMU knows well the dma mask requirements of masters. After > this patch, the masters code does not need care > dma-ranges/dma_mask related information. > > Cc: Bin Liu <bin.liu@mediatek.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: kyrie wu <kyrie.wu@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Regards, Hans > --- > drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 3 --- > 1 file changed, 3 deletions(-) > > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c > index 969516a940ba..9b96d2436311 100644 > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c > @@ -1757,9 +1757,6 @@ static int mtk_jpeg_probe(struct platform_device *pdev) > jpeg->vdev->device_caps = V4L2_CAP_STREAMING | > V4L2_CAP_VIDEO_M2M_MPLANE; > > - if (of_get_property(pdev->dev.of_node, "dma-ranges", NULL)) > - dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34)); > - > ret = video_register_device(jpeg->vdev, VFL_TYPE_VIDEO, -1); > if (ret) { > v4l2_err(&jpeg->v4l2_dev, "Failed to register video device\n");
On 11/04/2023 11:31, Yong Wu wrote: > In order to simplify the masters to set their respective dma masks, MTK > IOMMU helps to centralize the processing. Because all the dma ranges is > set in IOMMU, IOMMU knows well the dma mask requirements of masters. After > this patch, the masters(codec here) code does not need care > dma-ranges/dma_mask related information. > > Cc: Tiffany Lin <tiffany.lin@mediatek.com> > Cc: Andrew-CT Chen <andrew-ct.chen@mediatek.com> > Cc: Yunfei Dong <yunfei.dong@mediatek.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: irui wang <irui.wang@mediatek.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Regards, Hans > --- > .../media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c | 8 -------- > .../media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c | 3 --- > 2 files changed, 11 deletions(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > index 174a6eec2f54..11583405cf61 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c > @@ -321,14 +321,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev) > } > } > > - if (of_get_property(pdev->dev.of_node, "dma-ranges", NULL)) { > - ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34)); > - if (ret) { > - mtk_v4l2_err("Failed to set mask"); > - goto err_core_workq; > - } > - } > - > for (i = 0; i < MTK_VDEC_HW_MAX; i++) > mutex_init(&dev->dec_mutex[i]); > mutex_init(&dev->dev_mutex); > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > index 9095186d5495..50e5571608cd 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_enc_drv.c > @@ -344,9 +344,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev) > goto err_event_workq; > } > > - if (of_get_property(pdev->dev.of_node, "dma-ranges", NULL)) > - dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34)); > - > ret = video_register_device(vfd_enc, VFL_TYPE_VIDEO, -1); > if (ret) { > mtk_v4l2_err("Failed to register video device");
On 11/04/2023 11:31, Yong Wu wrote: > After commit f1ad5338a4d5 ("of: Fix "dma-ranges" handling for bus > controllers"), the dma-ranges is not allowed for dts leaf node. > but we still would like to separate the different masters into > different iova regions. Thus we adjust the internal flow, separate > the 16GB iova range by the master HW larbid/portid and add the > dma-ranges property in the parent "soc" node. This also could avoid > the users forget/abuse the iova regions. > > The commit f1ad5338a4d5 did affect the mt8195 venc, But it is not > a fatal issue, it could also work well at 0-4GB iova. thus I don't > add "Fixes:" tag. > > In this series, I add functions for mt8192/mt8195/mt8186, mt8188 will > be in its special patchset. and the previous mt8173/mt8183...support > 0-4GB only, no need this function. I've Acked patches 10 and 11 as well. I assume this series will be merged through the iommu subsystem? If not, and I need to take the media patches, then please let me know! Regards, Hans > > Change note: > v7: Remove the change about mediatek,vcodec-subdev-decoder.yaml since > this was merged at: > https://lore.kernel.org/all/98c48690-631d-1086-9b7c-004c61cc8dbb@xs4all.nl/ > > v6: https://lore.kernel.org/linux-mediatek/20230403091337.26745-1-yong.wu@mediatek.com/ > Add three patches for set dma-mask for iommu master devices. > > v5: Nothing change. Just rebase on v6.3-rc1. > > v4: https://lore.kernel.org/linux-mediatek/20230215062544.8677-1-yong.wu@mediatek.com/ > Improve the comment in the code from AngeloGioacchino. > > v3: https://lore.kernel.org/linux-mediatek/20230214031114.926-1-yong.wu@mediatek.com/ > Add a new patch only for comment more in the code. > > v2: https://lore.kernel.org/linux-mediatek/20230208053643.28249-1-yong.wu@mediatek.com/ > a) Base on next-20230206 since mt8195 jpeg node is applied which affect > this patch. > b) Reword the commit message [1/10][2/10] to explain effect. > > v1: https://lore.kernel.org/linux-mediatek/20230113060133.9394-1-yong.wu@mediatek.com/ > Base on v6.2-rc3. > > Yong Wu (14): > dt-bindings: media: mediatek,vcodec: Remove dma-ranges property > dt-bindings: media: mediatek,jpeg: Remove dma-ranges property > iommu/mediatek: Improve comment for the current region/bank > iommu/mediatek: Get regionid from larb/port id > iommu/mediatek: mt8192: Add iova_region_larb_msk > iommu/mediatek: mt8195: Add iova_region_larb_msk > iommu/mediatek: mt8186: Add iova_region_larb_msk > iommu/mediatek: Add a gap for the iova regions > iommu/mediatek: Set dma_mask for the master devices > media: mtk-jpegdec: Remove the setting for dma_mask > media: mediatek: vcodec: Remove the setting for dma_mask > arm64: dts: mt8195: Remove the unnecessary dma-ranges > arm64: dts: mt8195: Add dma-ranges for the parent "soc" node > arm64: dts: mt8186: Add dma-ranges for the parent "soc" node > > .../media/mediatek,mt8195-jpegdec.yaml | 7 - > .../media/mediatek,mt8195-jpegenc.yaml | 7 - > .../media/mediatek,vcodec-decoder.yaml | 5 - > .../media/mediatek,vcodec-encoder.yaml | 5 - > .../bindings/media/mediatek-jpeg-encoder.yaml | 5 - > arch/arm64/boot/dts/mediatek/mt8186.dtsi | 1 + > arch/arm64/boot/dts/mediatek/mt8195.dtsi | 4 +- > drivers/iommu/mtk_iommu.c | 145 ++++++++++++++---- > .../platform/mediatek/jpeg/mtk_jpeg_core.c | 3 - > .../mediatek/vcodec/mtk_vcodec_dec_drv.c | 8 - > .../mediatek/vcodec/mtk_vcodec_enc_drv.c | 3 - > 11 files changed, 117 insertions(+), 76 deletions(-) >
On Tue, Apr 11, 2023 at 05:31:30PM +0800, Yong Wu wrote: > Yong Wu (14): > dt-bindings: media: mediatek,vcodec: Remove dma-ranges property > dt-bindings: media: mediatek,jpeg: Remove dma-ranges property > iommu/mediatek: Improve comment for the current region/bank > iommu/mediatek: Get regionid from larb/port id > iommu/mediatek: mt8192: Add iova_region_larb_msk > iommu/mediatek: mt8195: Add iova_region_larb_msk > iommu/mediatek: mt8186: Add iova_region_larb_msk > iommu/mediatek: Add a gap for the iova regions > iommu/mediatek: Set dma_mask for the master devices > media: mtk-jpegdec: Remove the setting for dma_mask > media: mediatek: vcodec: Remove the setting for dma_mask > arm64: dts: mt8195: Remove the unnecessary dma-ranges > arm64: dts: mt8195: Add dma-ranges for the parent "soc" node > arm64: dts: mt8186: Add dma-ranges for the parent "soc" node Applied, thanks.