Skip to contentSkip to conversation

iommu/arm-smmu: Add global SMR masking property

RFC PATCH New Robin Murphy 5 participants 8 messages Dec 16, 2016 – Mar 3, 2017

Subsystems (3)
lore
Share & tools
lore

Robin Murphy

author reviewer
#0 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +3 -1
index 8f7281444551..f1abcb7dde36 100644
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args)
 {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask", &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 
 	return iommu_fwspec_add_ids(dev, &fwid, 1);
 }
Signature · 1 line
2.10.2.dirty
#1 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

Quoted 20 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Robin Murphy
Sent: Friday, December 16, 2016 18:49
To: iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

Quoted 1 line
CC Stuart Yoder <[email protected]>
Quoted 59 lines

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +3 -1
index 8f7281444551..f1abcb7dde36 100644
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct
 iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args)
 {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask",
 &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 

return iommu_fwspec_add_ids(dev, &fwid, 1);
}
--
2.10.2.dirty

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

#2 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

Hi Robin,

Quoted 33 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Nipun Gupta
Sent: Sunday, December 18, 2016 2:37 AM
To: Robin Murphy <[email protected]>; iommu at lists.linux- foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: RE: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

Quoted 9 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Robin Murphy
Sent: Friday, December 16, 2016 18:49
To: iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: [RFC PATCH] iommu/arm-smmu: Add global SMR masking

property

Quoted 9 lines

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

Quoted 3 lines
Quoted 1 line
CC Stuart Yoder <[email protected]>

We have verified this patches with PCI and FSL-MC bus devices.

I do not see any comment on this patch, I know there were holidays around, can we assume this as accepted and we can develop u-boot patches.

Thanks
-Bharat

Quoted 64 lines

drivers/iommu/arm-smmu.c

Quoted 31 lines

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +0 -0

index

Quoted 24 lines

8f7281444551..f1abcb7dde36 100644

drivers/iommu/arm-smmu.c +3 -1
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct
 iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct
 of_phandle_args *args)  {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask",
 &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 

return iommu_fwspec_add_ids(dev, &fwid, 1); }
--
2.10.2.dirty

Quoted 4 lines

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

#3 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

In reply to Nipun Gupta

Hi Robin/Will,

This patch is currently not applied on the tree.
I had verified the patch and it seems good.
Is ack required on the patch or do I need to send a non RFC patch (with Robin's signoff)? This is very much required to support SMMU on NXP platform.

Thanks,
Nipun

Quoted 95 lines

-----Original Message-----
From: Nipun Gupta
Sent: Sunday, December 18, 2016 2:37
To: Robin Murphy <[email protected]>; iommu at lists.linux- foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: RE: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

Quoted 5 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Robin Murphy
Sent: Friday, December 16, 2016 18:49
To: iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-

arm-

Quoted 13 lines

kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

Quoted 1 line
CC Stuart Yoder <[email protected]>
Quoted 34 lines

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +0 -0
index 8f7281444551..f1abcb7dde36 100644

drivers/iommu/arm-smmu.c static int arm_smmu_domain_set_attr(struct · line 1536

Quoted 3 lines
drivers/iommu/arm-smmu.c +0 -0
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct
 iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args

*args)

Quoted 22 lines
drivers/iommu/arm-smmu.c +3 -1
 {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask",
 &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 

return iommu_fwspec_add_ids(dev, &fwid, 1);
}
--
2.10.2.dirty

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

author reviewer
#4 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

Quoted 7 lines · Nipun Gupta

Hi Robin/Will,

This patch is currently not applied on the tree.
I had verified the patch and it seems good.
Is ack required on the patch or do I need to send a non RFC patch (with Robin's signoff)? This is very much required to support SMMU on NXP platform.

It's still sat in my "patches to do something with" queue - I don't think we ever reached a concrete decision on the property name for a DT maintainer ack, but I've tweaked the description per Will's comment; thanks for the reminder. I'll send an rc1-based version out next week to reboot the discussion.

Robin.

Quoted 100 lines

Thanks,
Nipun

Quoted 95 lines

-----Original Message-----
From: Nipun Gupta
Sent: Sunday, December 18, 2016 2:37
To: Robin Murphy <[email protected]>; iommu at lists.linux- foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: RE: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

Quoted 5 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Robin Murphy
Sent: Friday, December 16, 2016 18:49
To: iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-

arm-

Quoted 13 lines

kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

Quoted 1 line
CC Stuart Yoder <[email protected]>
Quoted 34 lines

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +0 -0
index 8f7281444551..f1abcb7dde36 100644

drivers/iommu/arm-smmu.c static int arm_smmu_domain_set_attr(struct · line 1536

Quoted 3 lines
drivers/iommu/arm-smmu.c +0 -0
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct
 iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args

*args)

Quoted 22 lines
drivers/iommu/arm-smmu.c +3 -1
 {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask",
 &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 

return iommu_fwspec_add_ids(dev, &fwid, 1);
}
--
2.10.2.dirty

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

#5 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

Thanks Robin,
This would be of great help.

Regards,
Nipun

Quoted 128 lines

-----Original Message-----
From: Robin Murphy [mailto:robin.murphy at arm.com]
Sent: Thursday, March 02, 2017 22:18
To: Nipun Gupta <[email protected]>; iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; stuyoder at gmail.com; Bharat Bhushan <[email protected]>
Subject: Re: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

Quoted 6 lines · Nipun Gupta

Hi Robin/Will,

This patch is currently not applied on the tree.
I had verified the patch and it seems good.
Is ack required on the patch or do I need to send a non RFC patch (with Robin's

signoff)?

Quoted 1 line

This is very much required to support SMMU on NXP platform.

It's still sat in my "patches to do something with" queue - I don't think we ever reached a concrete decision on the property name for a DT maintainer ack, but I've tweaked the description per Will's comment; thanks for the reminder. I'll send an rc1-based version out next week to reboot the discussion.

Robin.

Quoted 14 lines

Thanks,
Nipun

Quoted 9 lines

-----Original Message-----
From: Nipun Gupta
Sent: Sunday, December 18, 2016 2:37
To: Robin Murphy <[email protected]>; iommu at lists.linux- foundation.org; devicetree at vger.kernel.org; linux-arm- kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: RE: [RFC PATCH] iommu/arm-smmu: Add global SMR masking

property

Quoted 86 lines
Quoted 86 lines
Quoted 8 lines

-----Original Message-----
From: iommu-bounces at lists.linux-foundation.org [mailto:iommu- bounces at lists.linux-foundation.org] On Behalf Of Robin Murphy
Sent: Friday, December 16, 2016 18:49
To: iommu at lists.linux-foundation.org; devicetree at vger.kernel.org; linux-

arm-

Quoted 13 lines

kernel at lists.infradead.org
Cc: mark.rutland at arm.com; will.deacon at arm.com; Stuart Yoder <[email protected]>
Subject: [RFC PATCH] iommu/arm-smmu: Add global SMR masking property

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

Quoted 1 line
CC Stuart Yoder <[email protected]>
Quoted 34 lines

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +8 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
drivers/iommu/arm-smmu.c +0 -0
index 8f7281444551..f1abcb7dde36 100644

drivers/iommu/arm-smmu.c static int arm_smmu_domain_set_attr(struct · line 1536

Quoted 3 lines
drivers/iommu/arm-smmu.c +0 -0
@@ -1534,13 +1534,15 @@ static int arm_smmu_domain_set_attr(struct
 iommu_domain *domain,
 
 static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args

*args)

Quoted 22 lines
drivers/iommu/arm-smmu.c +3 -1
 {
-	u32 fwid = 0;
+	u32 mask, fwid = 0;
 
 	if (args->args_count > 0)
 		fwid |= (u16)args->args[0];
 
 	if (args->args_count > 1)
 		fwid |= (u16)args->args[1] << SMR_MASK_SHIFT;
+	else if (!of_property_read_u32(args->np, "stream-match-mask",
 &mask))
+		fwid |= (u16)mask << SMR_MASK_SHIFT;
 

return iommu_fwspec_add_ids(dev, &fwid, 1);
}
--
2.10.2.dirty

_______________________________________________
iommu mailing list
iommu at lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

maintainer
#6 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

In reply to Robin Murphy
Quoted 23 lines · Robin Murphy

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +0 -0
index e862d1485205..98f5cbe5fdb4 100644

Documentation/devicetree/bindings/iommu/arm,smmu.txt conditions. · line 63

Quoted 4 lines
Documentation/devicetree/bindings/iommu/arm,smmu.txt +1 -0
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
+- stream-match-mask : Specifies a fixed SMR mask value to combine with

Needs a vendor prefix.

Otherwise looks fine.

Quoted 10 lines
Documentation/devicetree/bindings/iommu/arm,smmu.txt +7 -0
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).
+
 ** Deprecated properties:
 
 - mmu-masters (deprecated in favour of the generic "iommus" binding) :
#7 lore raw

RFC PATCH 1/1 iommu/arm-smmu: Add global SMR masking property

Quoted 27 lines · Rob Herring
Quoted 26 lines · Robin Murphy

The current SMR masking support using a 2-cell iommu-specifier is primarily intended to handle individual masters with large and/or complex Stream ID assignments; it quickly gets a bit clunky in other SMR use-cases where we just want to consistently mask out the same part of every Stream ID (e.g. for MMU-500 configurations where the appended TBU number gets in the way unnecessarily). Let's add a new property to allow a single global mask value to better fit the latter situation.

---

Compile-tested only...

 Documentation/devicetree/bindings/iommu/arm,smmu.txt | 8 ++++++++
 drivers/iommu/arm-smmu.c                             | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/iommu/arm,smmu.txt +0 -0
index e862d1485205..98f5cbe5fdb4 100644
@@ -60,6 +60,14 @@ conditions.
                   aliases of secure registers have to be used during
                   SMMU configuration.
 
Quoted 3 lines

Documentation/devicetree/bindings/iommu/arm,smmu.txt conditions. · line 63

Quoted 1 line
Documentation/devicetree/bindings/iommu/arm,smmu.txt +1 -0
+- stream-match-mask : Specifies a fixed SMR mask value to combine with

Needs a vendor prefix.

Why does this need a vendor prefix? I'm not fussed either way, but since the stream-match-mask is an optional architectural concept and not specific to an implementation, it seems strange to me that it would need a prefix whereas something like #global-interrupts does not.

Quoted 6 lines

Documentation/devicetree/bindings/iommu/arm,smmu.txt conditions. · line 69

Quoted 6 lines
Documentation/devicetree/bindings/iommu/arm,smmu.txt +6 -0
+                  the Stream ID value from every iommu-specifier. This
+                  may be used instead of an "#iommu-cells" value of 2
+                  when there is no need for per-master SMR masks, but
+                  it is still desired to mask some portion of every
+                  Stream ID (e.g. for certain MMU-500 configurations
+                  given globally unique external IDs).

Robin -- it might be worth a sentence here saying that the property is ignored if stream matching isn't supported by the hardware.

Will