Skip to contentSkip to conversation

arm64: dts: qcom: agatti: Fix IOMMU DT properties

PATCH Superseded Sumit Garg 3 participants 12 messages Jan 16 – Jan 21

Subsystems (9)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Sumit Garg

author
#0 lore raw

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
author
#1 lore raw

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
index f0cdb5422688..5c888f07bc0b 100644
@@ -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
#2 lore raw

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.

---
 .../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
index f0cdb5422688..5c888f07bc0b 100644

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

author
#3 lore raw

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.

---
 .../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
index f0cdb5422688..5c888f07bc0b 100644
@@ -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 -0
   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.

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

#4 lore raw

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.

---
 .../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
index f0cdb5422688..5c888f07bc0b 100644
@@ -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 -0
   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.

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

author
#5 lore raw

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.

---
 .../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
index f0cdb5422688..5c888f07bc0b 100644

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.

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 +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.

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

#6 lore raw

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

author
#7 lore raw

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 +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.

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

author
#8 lore raw

PATCH v2 2/3 media: dt-bindings: venus: Fix iommus property

In reply to 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 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
index 3f3ee82fc878..ae6bc0d0bea6 100644
@@ -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
#9 lore raw

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.

---
 .../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
index 3f3ee82fc878..ae6bc0d0bea6 100644

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 -0
     maxItems: 5

Best regards,
Krzysztof

author
#10 lore raw

PATCH v2 3/3 arm64: dts: qcom: agatti: Fix IOMMU DT properties

In reply to 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.

---
 arch/arm64/boot/dts/qcom/agatti.dtsi | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
arch/arm64/boot/dts/qcom/agatti.dtsi +3 -8
index 7815ece261ea..7c1a636e51f0 100644
@@ -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
Reviewed-by on v2 3/3
#11 lore raw
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
---
 arch/arm64/boot/dts/qcom/agatti.dtsi | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
Signature · 2 lines
With best wishes
Dmitry