Message ID | 20230307023507.13306-1-yong.wu@mediatek.com |
---|---|
Headers | show |
Series | Adjust the dma-ranges for MTK IOMMU | expand |
On 07/03/2023 03:34, Yong Wu wrote: > After commit f1ad5338a4d5 ("of: Fix "dma-ranges" handling for bus > controllers"), the dma-ranges of the leaf node doesn't work. Remove > it for vcodec here. > > 1) For mediatek,vcodec-decoder.yaml and mediatek,vcodec-encoder.yaml, > this property is in the leaf node, it is invalid as the above comment. > > Currently there is only mt8195 VENC node has this property in upstream. > Indeed, VENC is affected, but it is not a fatal issue. Originally it > expects its iova range locate at 4GB-8GB. However after that commit, its > expectation doesn't come true, it will fall back to 0-4GB iova and also > could work well. > > 2) For mediatek,vcodec-subdev-decoder.yaml, It already uses parent-child > node, this property works. Instead, MediaTek iommu will control the > masters' iova ranges by the master's larb/port id internally, then the > dma-ranges property is unnecessary for the master's node. > > 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: Matthias Brugger <matthias.bgg@gmail.com> > Signed-off-by: Yong Wu <yong.wu@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > Acked-by: Rob Herring <robh@kernel.org> Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Regards, Hans > --- > .../devicetree/bindings/media/mediatek,vcodec-decoder.yaml | 5 ----- > .../devicetree/bindings/media/mediatek,vcodec-encoder.yaml | 5 ----- > .../bindings/media/mediatek,vcodec-subdev-decoder.yaml | 7 ------- > 3 files changed, 17 deletions(-) > > diff --git a/Documentation/devicetree/bindings/media/mediatek,vcodec-decoder.yaml b/Documentation/devicetree/bindings/media/mediatek,vcodec-decoder.yaml > index aa55ca65d6ed..fad59b486d5d 100644 > --- a/Documentation/devicetree/bindings/media/mediatek,vcodec-decoder.yaml > +++ b/Documentation/devicetree/bindings/media/mediatek,vcodec-decoder.yaml > @@ -56,11 +56,6 @@ properties: > List of the hardware port in respective IOMMU block for current Socs. > Refer to bindings/iommu/mediatek,iommu.yaml. > > - dma-ranges: > - maxItems: 1 > - description: | > - Describes the physical address space of IOMMU maps to memory. > - > mediatek,vpu: > $ref: /schemas/types.yaml#/definitions/phandle > description: > diff --git a/Documentation/devicetree/bindings/media/mediatek,vcodec-encoder.yaml b/Documentation/devicetree/bindings/media/mediatek,vcodec-encoder.yaml > index 0f2ea8d9a10c..a2051b31fa29 100644 > --- a/Documentation/devicetree/bindings/media/mediatek,vcodec-encoder.yaml > +++ b/Documentation/devicetree/bindings/media/mediatek,vcodec-encoder.yaml > @@ -49,11 +49,6 @@ properties: > List of the hardware port in respective IOMMU block for current Socs. > Refer to bindings/iommu/mediatek,iommu.yaml. > > - dma-ranges: > - maxItems: 1 > - description: | > - Describes the physical address space of IOMMU maps to memory. > - > mediatek,vpu: > $ref: /schemas/types.yaml#/definitions/phandle > description: > diff --git a/Documentation/devicetree/bindings/media/mediatek,vcodec-subdev-decoder.yaml b/Documentation/devicetree/bindings/media/mediatek,vcodec-subdev-decoder.yaml > index c4f20acdc1f8..290594bc91cc 100644 > --- a/Documentation/devicetree/bindings/media/mediatek,vcodec-subdev-decoder.yaml > +++ b/Documentation/devicetree/bindings/media/mediatek,vcodec-subdev-decoder.yaml > @@ -76,11 +76,6 @@ properties: > The node of system control processor (SCP), using > the remoteproc & rpmsg framework. > > - dma-ranges: > - maxItems: 1 > - description: | > - Describes the physical address space of IOMMU maps to memory. > - > "#address-cells": > const: 2 > > @@ -203,7 +198,6 @@ required: > - reg > - iommus > - mediatek,scp > - - dma-ranges > - ranges > > if: > @@ -236,7 +230,6 @@ examples: > compatible = "mediatek,mt8192-vcodec-dec"; > mediatek,scp = <&scp>; > iommus = <&iommu0 M4U_PORT_L4_VDEC_MC_EXT>; > - dma-ranges = <0x1 0x0 0x0 0x40000000 0x0 0xfff00000>; > #address-cells = <2>; > #size-cells = <2>; > ranges = <0 0 0 0x16000000 0 0x40000>;
On 07/03/2023 03:34, 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. > > Change note: > 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 (11): > dt-bindings: media: mediatek,vcodec: Remove dma-ranges property > dt-bindings: media: mediatek,jpeg: Remove dma-ranges property I assume that these two media bindings patches be pulled in through the iommu subsystem? Or are they independent and can I take them? Either is fine with me, I just need to know. Regards, Hans > 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 > arm64: dts: mt8195: Add dma-ranges for the parent "soc" node > arm64: dts: mt8195: Remove the unnecessary dma-ranges > 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 - > .../media/mediatek,vcodec-subdev-decoder.yaml | 7 - > .../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 | 143 ++++++++++++++---- > 9 files changed, 114 insertions(+), 70 deletions(-) >