* [PATCH v5 1/3] dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings
2026-11-13 14:32 [PATCH v5 0/3] arm64: dts: qcom: shikra: Add EL2 overlay for EVK variants Komal Bajaj
@ 2026-11-13 14:32 ` Komal Bajaj
2026-11-13 14:52 ` sashiko-bot
2026-11-13 14:32 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,shikra-pas: Add iommus constraints Komal Bajaj
2026-11-13 14:32 ` [PATCH v5 3/3] arm64: dts: qcom: shikra: Add EL2 overlay for remoteproc SMMU mappings Komal Bajaj
2 siblings, 1 reply; 5+ messages in thread
From: Komal Bajaj @ 2026-11-13 14:32 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mathieu Poirier,
Manivannan Sadhasivam, Bartosz Golaszewski, Kumar Patro
Cc: linux-arm-msm, devicetree, linux-kernel, linux-remoteproc,
Komal Bajaj
qcom,pas-common.yaml limits iommus to a single entry for every PAS
remoteproc, which is too restrictive for SoCs whose firmware uses
multiple IOMMU streams.
Drop iommus from common binding and let each SoC-specific binding declare
it with its own limits. These bindings set unevaluatedProperties: false,
so a compatible that does not declare iommus rejects it. Declare it for
every compatible whose nodes use it.
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
---
.../devicetree/bindings/remoteproc/qcom,pas-common.yaml | 3 ---
.../devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml | 4 ++++
.../devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml | 12 ++++++++++++
.../devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml | 13 +++++++++++++
.../devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 15 +++++++++++++++
5 files changed, 44 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
index f75cab6b4ed9..4662fe4cff62 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
@@ -32,9 +32,6 @@ properties:
minItems: 5
maxItems: 6
- iommus:
- maxItems: 1
-
power-domains:
minItems: 1
maxItems: 3
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml
index dda2d144b720..3c35da52204d 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sa8775p-pas.yaml
@@ -38,6 +38,10 @@ properties:
reg:
maxItems: 1
+ iommus:
+ maxItems: 1
+ description: Firmware Stream
+
clocks:
items:
- description: XO clock
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
index b20780e5e26b..8aebc785f212 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
@@ -169,6 +169,18 @@ allOf:
- const: cx
- const: mx
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,sc7280-adsp-pas
+ - qcom,sc7280-cdsp-pas
+ then:
+ properties:
+ iommus:
+ maxItems: 1
+ description: Firmware Stream
+
unevaluatedProperties: false
examples:
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
index 5a7c5f8c92d1..5c41c8936960 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
@@ -178,6 +178,19 @@ allOf:
- const: lcx
- const: lmx
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,qcs615-adsp-pas
+ - qcom,qcs615-cdsp-pas
+ then:
+ properties:
+ iommus:
+ maxItems: 1
+ description: Firmware Stream
+
unevaluatedProperties: false
examples:
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
index 99e9aeeb4f62..f838b98c43f4 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
@@ -317,6 +317,21 @@ allOf:
- const: mx
- const: nsp
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,glymur-adsp-pas
+ - qcom,glymur-cdsp-pas
+ - qcom,x1e80100-adsp-pas
+ - qcom,x1e80100-cdsp-pas
+ then:
+ properties:
+ iommus:
+ maxItems: 1
+ description: Firmware Stream
+
unevaluatedProperties: false
examples:
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v5 1/3] dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings
2026-11-13 14:32 ` [PATCH v5 1/3] dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings Komal Bajaj
@ 2026-11-13 14:52 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-13 14:52 UTC (permalink / raw)
To: Komal Bajaj; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] dt-bindings: remoteproc: iommus defined only in allOf if/then
blocks
--
commit 1ded47577cc7fa6ba7648da8e6df9b5ccd0a3022
Author: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings
This commit removes the iommus property from the common PAS remoteproc
binding and adds it to the SoC-specific PAS bindings that use it.
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> index f75cab6b4ed95..4662fe4cff62f 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> @@ -32,9 +32,6 @@ properties:
> minItems: 5
> maxItems: 6
>
> - iommus:
> - maxItems: 1
> -
> power-domains:
> minItems: 1
> maxItems: 3
[ ... ]
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
> index b20780e5e26bd..8aebc785f2126 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-pas.yaml
> @@ -169,6 +169,18 @@ allOf:
> - const: cx
> - const: mx
>
> + - if:
> + properties:
> + compatible:
> + enum:
> + - qcom,sc7280-adsp-pas
> + - qcom,sc7280-cdsp-pas
> + then:
> + properties:
> + iommus:
> + maxItems: 1
> + description: Firmware Stream
> +
> unevaluatedProperties: false
>
> examples:
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
> index 5a7c5f8c92d17..5c41c89369605 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8150-pas.yaml
> @@ -178,6 +178,19 @@ allOf:
> - const: lcx
> - const: lmx
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,qcs615-adsp-pas
> + - qcom,qcs615-cdsp-pas
> + then:
> + properties:
> + iommus:
> + maxItems: 1
> + description: Firmware Stream
> +
> unevaluatedProperties: false
>
> examples:
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> index 99e9aeeb4f62c..f838b98c43f40 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> @@ -317,6 +317,21 @@ allOf:
> - const: mx
> - const: nsp
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,glymur-adsp-pas
> + - qcom,glymur-cdsp-pas
> + - qcom,x1e80100-adsp-pas
> + - qcom,x1e80100-cdsp-pas
> + then:
> + properties:
> + iommus:
> + maxItems: 1
> + description: Firmware Stream
> +
> unevaluatedProperties: false
>
> examples:
[Severity: Low]
As reported by Krzysztof Kozlowski on v4 [1], should iommus also be
declared in the top-level properties section of qcom,sc7180-pas.yaml,
qcom,sm8150-pas.yaml, and qcom,sm8550-pas.yaml (or kept with broad bounds
in qcom,pas-common.yaml)?
With iommus removed from qcom,pas-common.yaml, these three schemas define
iommus and its description only inside allOf if/then blocks, whereas
Documentation/devicetree/bindings/writing-schema.rst requires properties to
be defined in top-level properties with the broadest constraints and then
narrowed or disallowed in if/then/else blocks.
[1] https://lore.kernel.org/r/20261105-cunning-whippet-of-success-e4fd3d@quoll
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261113-shikra-el2-v5-0-8aca743de97f@oss.qualcomm.com?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v5 2/3] dt-bindings: remoteproc: qcom,shikra-pas: Add iommus constraints
2026-11-13 14:32 [PATCH v5 0/3] arm64: dts: qcom: shikra: Add EL2 overlay for EVK variants Komal Bajaj
2026-11-13 14:32 ` [PATCH v5 1/3] dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings Komal Bajaj
@ 2026-11-13 14:32 ` Komal Bajaj
2026-11-13 14:32 ` [PATCH v5 3/3] arm64: dts: qcom: shikra: Add EL2 overlay for remoteproc SMMU mappings Komal Bajaj
2 siblings, 0 replies; 5+ messages in thread
From: Komal Bajaj @ 2026-11-13 14:32 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mathieu Poirier,
Manivannan Sadhasivam, Bartosz Golaszewski, Kumar Patro
Cc: linux-arm-msm, devicetree, linux-kernel, linux-remoteproc,
Komal Bajaj
Describe the iommus streams of the Shikra PAS remoteprocs, needed when
Linux boots at EL2 without the hypervisor: CDSP uses a single stream,
while LPAICP firmware uses three.
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
---
.../devicetree/bindings/remoteproc/qcom,shikra-pas.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml
index 34a2f15e9361..1688d198cc5a 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml
@@ -119,6 +119,17 @@ allOf:
items:
- const: cx
+ - if:
+ properties:
+ compatible:
+ enum:
+ - qcom,shikra-cdsp-pas
+ then:
+ properties:
+ iommus:
+ maxItems: 1
+ description: Firmware Stream
+
- if:
properties:
compatible:
@@ -134,6 +145,11 @@ allOf:
minItems: 2
firmware-name:
minItems: 2
+ iommus:
+ items:
+ - description: Firmware Stream
+ - description: Firmware MMIO Stream
+ - description: QUP Stream
power-domains: false
power-domain-names: false
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v5 3/3] arm64: dts: qcom: shikra: Add EL2 overlay for remoteproc SMMU mappings
2026-11-13 14:32 [PATCH v5 0/3] arm64: dts: qcom: shikra: Add EL2 overlay for EVK variants Komal Bajaj
2026-11-13 14:32 ` [PATCH v5 1/3] dt-bindings: remoteproc: Move iommus constraint to SoC-specific bindings Komal Bajaj
2026-11-13 14:32 ` [PATCH v5 2/3] dt-bindings: remoteproc: qcom,shikra-pas: Add iommus constraints Komal Bajaj
@ 2026-11-13 14:32 ` Komal Bajaj
2 siblings, 0 replies; 5+ messages in thread
From: Komal Bajaj @ 2026-11-13 14:32 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Mathieu Poirier,
Manivannan Sadhasivam, Bartosz Golaszewski, Kumar Patro
Cc: linux-arm-msm, devicetree, linux-kernel, linux-remoteproc,
Komal Bajaj, Abel Vesa, Dmitry Baryshkov
Shikra boards currently boot Linux under a hypervisor, where the
remote processor firmware IOMMU streams are managed by the hypervisor.
When booting Linux directly at EL2 without the hypervisor, the IOMMU
is instead managed by the consumer of this DeviceTree, so the firmware
streams for each remote processor need to be described explicitly.
Add an EL2-specific DT overlay and apply it to all Shikra EVK variants
devices to produce an -el2.dtb alongside the "normal" dtb.
Co-developed-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
Signed-off-by: Bibek Kumar Patro <bibek.patro@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Komal Bajaj <komal.bajaj@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/Makefile | 11 +++++++++++
arch/arm64/boot/dts/qcom/shikra-el2.dtso | 29 +++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 8329c06b60a3..77097f440d00 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -404,9 +404,20 @@ dtb-$(CONFIG_ARCH_QCOM) += sdm850-lenovo-yoga-c630.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm850-samsung-w737.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb
+
+shikra-cqm-evk-el2-dtbs := shikra-cqm-evk.dtb shikra-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk-el2.dtb
+
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb
+
+shikra-cqs-evk-el2-dtbs := shikra-cqs-evk.dtb shikra-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk-el2.dtb
+
dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb
+shikra-iqs-evk-el2-dtbs := shikra-iqs-evk.dtb shikra-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-el2.dtb
+
shikra-cqm-evk-imx577-camera-dtbs := shikra-cqm-evk.dtb shikra-cqm-cqs-evk-imx577-camera.dtbo
shikra-cqs-evk-imx577-camera-dtbs := shikra-cqs-evk.dtb shikra-cqm-cqs-evk-imx577-camera.dtbo
shikra-iqs-evk-imx577-camera-dtbs := shikra-iqs-evk.dtb shikra-iqs-evk-imx577-camera.dtbo
diff --git a/arch/arm64/boot/dts/qcom/shikra-el2.dtso b/arch/arm64/boot/dts/qcom/shikra-el2.dtso
new file mode 100644
index 000000000000..a0f7c4a635ad
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/shikra-el2.dtso
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ *
+ * Shikra specific modifications required to boot in EL2.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&gpu_zap_shader {
+ status = "disabled";
+};
+
+&remoteproc_cdsp {
+ iommus = <&apps_smmu 0x0200 0x0>;
+};
+
+&remoteproc_lpaicp {
+ iommus = <&apps_smmu 0x0360 0x0005>,
+ <&apps_smmu 0x0366 0x0000>,
+ <&apps_smmu 0x00e7 0x0000>;
+};
+
+&wifi {
+ wifi-firmware {
+ iommus = <&apps_smmu 0x01a2 0x0001>;
+ };
+};
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread