arm64: dts: qcom: agatti: Fix IOMMU DT properties
Subsystems (9)
v2 cover arm64: dts: qcom: agatti: Fix IOMMU DT properties
From: Sumit Garg <[email protected]>
Fix IOMMU DT propeties for GPU, display and video peripherals via dropping SMMU stream IDs which relates to secure context bank.
This problem only surfaced when the Gunyah based firmware stack is ported on Agatti replacing the legacy QHEE based firmware stack. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is treated as a fault by Gunyah hypervisor which were previously ignored by QHEE hypervisor.
The DT changes should be backwards compatible with legacy QHEE based firmware stack too.
Changes in v2:
---
- Dropped Gunyah related reserved memory requirement changes
- Added DT bindings changes related to IOMMU property fixups
- Collected review tags for the DT changes
Sumit Garg (3):
dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
dt-bindings: media: venus: Fix iommus property
arm64: dts: qcom: agatti: Fix IOMMU DT properties
.../bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- .../devicetree/bindings/media/qcom,qcm2290-venus.yaml | 6 ++---- arch/arm64/boot/dts/qcom/agatti.dtsi | 11 +++-------- 3 files changed, 7 insertions(+), 15 deletions(-)
Signature · 1 line
2.51.0
PATCH v2 1/3 dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for display via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
--- .../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +2 -3
@@ -33,6 +33,7 @@ properties: - const: core iommus: + minItems: 1 maxItems: 2 interconnects:
@@ -107,9 +108,7 @@ examples: interconnect-names = "mdp0-mem", "cpu-cfg"; - iommus = <&apps_smmu 0x420 0x2>, - <&apps_smmu 0x421 0x0>; - ranges; + iommus = <&apps_smmu 0x420 0x2>; display-controller@5e01000 { compatible = "qcom,qcm2290-dpu";
Signature · 1 line
2.51.0
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 22 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for display via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
Signed-off-by Sumit Garg <[email protected]>--- .../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +0
-0
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml properties: · line 36
Quoted 4 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +1
-0@@ -33,6 +33,7 @@ properties: - const: core iommus: + minItems: 1
Same comment as other changes like that, which I already gave guideline
- you need to list the items (minItems stay), because you now claim the order matters and is strictly defined.
Best regards,
Krzysztof
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 25 lines · Krzysztof Kozlowski
Quoted 24 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for display via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
Signed-off-by Sumit Garg <[email protected]>--- .../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +0
-0@@ -33,6 +33,7 @@ properties: - const: core
Quoted 6 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml properties: · line 36
Quoted 2 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +1
-0iommus: + minItems: 1Same comment as other changes like that, which I already gave guideline
- you need to list the items (minItems stay), because you now claim the order matters and is strictly defined.
Not sure if I claimed that order matters now but rather the secure bank stream IDs were incorrectly represented earlier in the DT.
There has been ongoing disscusion related to how stream ID associated with different translation context can be represented in DT here [1]. With that only the secure bank stream IDs can be properly represented.
Here I just followed the approach taken by Adreno GPU bindings for the iommus property [2].
[1] https://lore.kernel.org/all/[email protected]/
[2] Documentation/devicetree/bindings/display/msm/gpu.yaml +82
-Sumit
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 33 lines · Sumit Garg
Quoted 25 lines · Krzysztof Kozlowski
Quoted 24 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for display via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
Signed-off-by Sumit Garg <[email protected]>--- .../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +0
-0@@ -33,6 +33,7 @@ properties: - const: coreQuoted 6 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml properties: · line 36
Quoted 2 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +1
-0iommus: + minItems: 1Same comment as other changes like that, which I already gave guideline
- you need to list the items (minItems stay), because you now claim the order matters and is strictly defined.
Quoted 2 lines
Not sure if I claimed that order matters now but rather the secure bank stream IDs were incorrectly represented earlier in the DT.
The code claims this by saying that one specific entry is allowed, so that entry is somehow distinctive, special, different than the other entry.
Quoted 9 lines
There has been ongoing disscusion related to how stream ID associated with different translation context can be represented in DT here [1]. With that only the secure bank stream IDs can be properly represented.
Here I just followed the approach taken by Adreno GPU bindings for the iommus property [2].
[2]
Documentation/devicetree/bindings/display/msm/gpu.yaml+82
Such justifications are pointless. What about commit msg which explains why this was added? What about entire public discussion happening with this patch? What about all previous revisions of that patch and discussions leading to this piece of code? So you just found few lines of code, ignored entire background and any other arguments, and copied it here.
That's the approach - I found a piece of some buggy code, so I can do the same.
Again, we discussed it 2-3 months ago for the same patch and I gave exactly same reason why this patch is incomplete.
Best regards,
Krzysztof
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 34 lines · Krzysztof Kozlowski
Quoted 33 lines · Sumit Garg
Quoted 31 lines · Krzysztof Kozlowski
Quoted 22 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for display via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
Signed-off-by Sumit Garg <[email protected]>--- .../devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +0
-0Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml properties: · line 36
Quoted 4 lines
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml +1
-0@@ -33,6 +33,7 @@ properties: - const: core iommus: + minItems: 1Same comment as other changes like that, which I already gave guideline
- you need to list the items (minItems stay), because you now claim the order matters and is strictly defined.
Quoted 5 lines
Quoted 2 lines
Not sure if I claimed that order matters now but rather the secure bank stream IDs were incorrectly represented earlier in the DT.
The code claims this by saying that one specific entry is allowed, so that entry is somehow distinctive, special, different than the other entry.
If that's the implicit understanding then I will rather just modify maxItems here to say only the supported non-secure stream IDs. The secure bank stream IDs can come later once a proper DT description comes in place.
Quoted 9 lines
Quoted 9 lines
There has been ongoing disscusion related to how stream ID associated with different translation context can be represented in DT here [1]. With that only the secure bank stream IDs can be properly represented.
Here I just followed the approach taken by Adreno GPU bindings for the iommus property [2].
Quoted 8 lines
Quoted 1 line
[2]
Documentation/devicetree/bindings/display/msm/gpu.yaml+82Such justifications are pointless. What about commit msg which explains why this was added? What about entire public discussion happening with this patch? What about all previous revisions of that patch and discussions leading to this piece of code? So you just found few lines of code, ignored entire background and any other arguments, and copied it here.
Looks like you are mixing other patch-set with this one.
Quoted 6 lines
That's the approach - I found a piece of some buggy code, so I can do the same.
Again, we discussed it 2-3 months ago for the same patch and I gave exactly same reason why this patch is incomplete.
Sorry you are just mixing different discussions here. I am trying to fix the SMMU stream IDs for Agatti SoC which listed secure bank stream IDs incorrectly.
And this is the first version of this patch only for DT bindings fix for Agatti, there are no prior discussions I had on this aspect upstream.
-Sumit
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 12 lines · Sumit Garg
Quoted 12 lines
Quoted 11 lines
There has been ongoing disscusion related to how stream ID associated with different translation context can be represented in DT here [1]. With that only the secure bank stream IDs can be properly represented.
Here I just followed the approach taken by Adreno GPU bindings for the iommus property [2].
[2]
Documentation/devicetree/bindings/display/msm/gpu.yaml+82
Quoted 8 lines
Quoted 6 lines
Such justifications are pointless. What about commit msg which explains why this was added? What about entire public discussion happening with this patch? What about all previous revisions of that patch and discussions leading to this piece of code? So you just found few lines of code, ignored entire background and any other arguments, and copied it here.
Looks like you are mixing other patch-set with this one.
How different? You found some old code and use it as argument that you can do the same:
"Here I just followed the approach taken by Adreno GPU bindings for the"
so how I am mixing patchsets in my response above?
Quoted 9 lines
Quoted 7 lines
That's the approach - I found a piece of some buggy code, so I can do the same.
Again, we discussed it 2-3 months ago for the same patch and I gave exactly same reason why this patch is incomplete.
Sorry you are just mixing different discussions here. I am trying to fix
How am I mixing? Exactly same approach was posted for other SoC. I gave same comments. Same comments apply here.
Quoted 2 lines
the SMMU stream IDs for Agatti SoC which listed secure bank stream IDs incorrectly.
You explain what you did, but you did not explain why or how I mixed anything.
Quoted 3 lines
And this is the first version of this patch only for DT bindings fix for Agatti, there are no prior discussions I had on this aspect upstream.
I did not say you had discussions before. I said exactly same problems were being solved and I give here and there exactly the same feedback.
Best regards,
Krzysztof
Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290-mdss: Fix iommus property
Quoted 20 lines · Krzysztof Kozlowski
Quoted 19 lines · Sumit Garg
Quoted 18 lines
Quoted 11 lines
There has been ongoing disscusion related to how stream ID associated with different translation context can be represented in DT here [1]. With that only the secure bank stream IDs can be properly represented.
Here I just followed the approach taken by Adreno GPU bindings for the iommus property [2].
[2]
Documentation/devicetree/bindings/display/msm/gpu.yaml+82Such justifications are pointless. What about commit msg which explains why this was added? What about entire public discussion happening with this patch? What about all previous revisions of that patch and discussions leading to this piece of code? So you just found few lines of code, ignored entire background and any other arguments, and copied it here.
Quoted 8 lines
Quoted 1 line
Looks like you are mixing other patch-set with this one.
How different? You found some old code and use it as argument that you can do the same:
"Here I just followed the approach taken by Adreno GPU bindings for the"
so how I am mixing patchsets in my response above?
You are referring to discussions of which I wasn't part of. The reason I mentioned Adreno GPU binding here is because I had to drop the secure bank stream ID for Adreno GPU as well here [1]. But it didn't required any DT bindings change while the venus and display IOMMU property required this change.
So how do you justify that GPU iommu DT bindings are correct while the venus and display iommu DT bindings require update.
Is there any documented behaviour for how the minItems/maxItems need to be used? Or is this just implementation defined based on mailing list discussions? And for sure all kernel contributors won't be aware about all those discussions happening.
[1] https://lore.kernel.org/all/[email protected]/
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
That's the approach - I found a piece of some buggy code, so I can do the same.
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
Again, we discussed it 2-3 months ago for the same patch and I gave exactly same reason why this patch is incomplete.
Sorry you are just mixing different discussions here. I am trying to fix
How am I mixing? Exactly same approach was posted for other SoC. I gave same comments. Same comments apply here.
I still don't know which other SoC discussions you are reffering too. Care to provide a link?
Quoted 6 lines
Quoted 3 lines
the SMMU stream IDs for Agatti SoC which listed secure bank stream IDs incorrectly.
You explain what you did, but you did not explain why or how I mixed anything.
I tried my best to describe the why part in commit descriptions:
"
Fix IOMMU DT propeties for GPU, display and video peripherals via dropping SMMU stream IDs which relates to secure context bank.
This problem only surfaced when the Gunyah based firmware stack is ported on Agatti replacing the legacy QHEE based firmware stack. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is treated as a fault by Gunyah hypervisor which were previously ignored by QHEE hypervisor.
"
Let me know if the why part is still unclear.
Quoted 8 lines
Quoted 4 lines
And this is the first version of this patch only for DT bindings fix for Agatti, there are no prior discussions I had on this aspect upstream.
I did not say you had discussions before. I said exactly same problems were being solved and I give here and there exactly the same feedback.
Care to provide link to earlier discussions?
-Sumit
PATCH v2 2/3 media: dt-bindings: venus: Fix iommus property
In reply to Sumit GargFrom: Sumit Garg <[email protected]>
Fix IOMMU DT propety for venus via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
--- .../devicetree/bindings/media/qcom,qcm2290-venus.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml +2 -4
@@ -42,6 +42,7 @@ properties: - const: vcodec0_bus iommus: + minItems: 2 maxItems: 5 interconnects:
@@ -102,10 +103,7 @@ examples: memory-region = <&pil_video_mem>; iommus = <&apps_smmu 0x860 0x0>, - <&apps_smmu 0x880 0x0>, - <&apps_smmu 0x861 0x04>, - <&apps_smmu 0x863 0x0>, - <&apps_smmu 0x804 0xe0>; + <&apps_smmu 0x880 0x0>; interconnects = <&mmnrt_virt MASTER_VIDEO_P0 RPM_ALWAYS_TAG &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
Signature · 1 line
2.51.0
Re: [PATCH v2 2/3] media: dt-bindings: venus: Fix iommus property
Quoted 7 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propety for venus via dropping SMMU stream IDs which relates to secure context bank. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is incorrect.
The min value is added for iommus property to ensure in future when
You do not add min value (that would be "minimum") but change the list.
Quoted 15 lines
secure context bank stream IDs are properly supported then the iommus property is extensible.
These DT bindings changes should be backwards compatible.
Signed-off-by Sumit Garg <[email protected]>--- .../devicetree/bindings/media/qcom,qcm2290-venus.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml +0
-0
Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml properties: · line 45
Quoted 4 lines
Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml +1
-0@@ -42,6 +42,7 @@ properties: - const: vcodec0_bus iommus: + minItems: 2
Same problem.
Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml properties: · line 46
Quoted 1 line
Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml +0
-0maxItems: 5
Best regards,
Krzysztof
PATCH v2 3/3 arm64: dts: qcom: agatti: Fix IOMMU DT properties
In reply to Sumit GargFrom: Sumit Garg <[email protected]>
Fix IOMMU DT propeties for GPU, display and video peripherals via dropping SMMU stream IDs which relates to secure context bank.
This problem only surfaced when the Gunyah based firmware stack is ported on Agatti replacing the legacy QHEE based firmware stack. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is treated as a fault by Gunyah hypervisor which were previously ignored by QHEE hypervisor.
The DT changes should be backwards compatible with legacy QHEE based firmware stack too.
--- arch/arm64/boot/dts/qcom/agatti.dtsi | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
arch/arm64/boot/dts/qcom/agatti.dtsi +3 -8
@@ -1665,8 +1665,7 @@ gpu: gpu@5900000 { &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>; interconnect-names = "gfx-mem"; - iommus = <&adreno_smmu 0 1>, - <&adreno_smmu 2 0>; + iommus = <&adreno_smmu 0 1>; operating-points-v2 = <&gpu_opp_table>; power-domains = <&rpmpd QCM2290_VDDCX>; qcom,gmu = <&gmu_wrapper>;
@@ -1947,8 +1946,7 @@ mdss: display-subsystem@5e00000 { power-domains = <&dispcc MDSS_GDSC>; - iommus = <&apps_smmu 0x420 0x2>, - <&apps_smmu 0x421 0x0>; + iommus = <&apps_smmu 0x420 0x2>; interconnects = <&mmrt_virt MASTER_MDP0 RPM_ALWAYS_TAG &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>, <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
@@ -2391,10 +2389,7 @@ venus: video-codec@5a00000 { memory-region = <&pil_video_mem>; iommus = <&apps_smmu 0x860 0x0>, - <&apps_smmu 0x880 0x0>, - <&apps_smmu 0x861 0x04>, - <&apps_smmu 0x863 0x0>, - <&apps_smmu 0x804 0xe0>; + <&apps_smmu 0x880 0x0>; interconnects = <&mmnrt_virt MASTER_VIDEO_P0 RPM_ALWAYS_TAG &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
Signature · 1 line
2.51.0
Quoted 14 lines · Sumit Garg
From: Sumit Garg <[email protected]>
Fix IOMMU DT propeties for GPU, display and video peripherals via dropping SMMU stream IDs which relates to secure context bank.
This problem only surfaced when the Gunyah based firmware stack is ported on Agatti replacing the legacy QHEE based firmware stack. Assigning Linux kernel (HLOS) VMID to secure context bank stream IDs is treated as a fault by Gunyah hypervisor which were previously ignored by QHEE hypervisor.
The DT changes should be backwards compatible with legacy QHEE based firmware stack too.
Quoted 8 lines
Suggested-by Prakash Gupta <[email protected]>Reviewed-by Konrad Dybcio <[email protected]>Reviewed-by Akhil P Oommen <[email protected]>Signed-off-by Sumit Garg <[email protected]>--- arch/arm64/boot/dts/qcom/agatti.dtsi | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
Signature · 2 lines
With best wishes Dmitry