2023-01-11 12:09:08

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 00/10] Fix XPU violation during modem metadata authentication

The memory region allocated using dma_alloc_attr with no kernel mapping
attribute set would still be a part of the linear kernel map. Any access
to this region by the application processor after assigning it to the
remote Q6 will result in a XPU violation. Fix this by replacing the
dynamically allocated memory region with a no-map carveout and unmap the
modem metadata memory region before passing control to the remote Q6.
The addition of the carveout and memunmap is required only on SoCs that
mandate memory protection before transferring control to Q6, hence the
driver falls back to dynamic memory allocation in the absence of the
modem metadata carveout.

V3:
* remove double space [Krzysztof]
* Pickup R-bs
* yaml description rewrite [Krzysztof]
* fix compatible property [Krzysztof]
* add blank lines and additionalProperties: false to mba/mpss
objects
* add blank lines and additionalProperties: false to mdata
objects [Krzysztof]
* Drop revert no_kernel_mapping since it's already on the list [Mani]
* kfree metadata from the branch for parity

V2:
* Convert legacy bindings to yaml
* Revert no_kernel_mapping [Mani/Robin]
* Pad commit message to explain bindings break [Krzysztof]
* Split dt/bindings per SoC [Krzysztof]

Depends on:
[revert no_kernel_mapping]: https://lore.kernel.org/linux-arm-msm/[email protected]/

Sibi Sankar (10):
dt-bindings: remoteproc: qcom,q6v5: Move MSM8996 to schema
dt-bindings: remoteproc: qcom,msm8996-mss-pil: Update memory region
dt-bindings: remoteproc: qcom,sc7180-mss-pil: Update memory-region
dt-bindings: remoteproc: qcom,sc7280-mss-pil: Update memory-region
remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem
headers
arm64: dts: qcom: msm8996: Add a carveout for modem metadata
arm64: dts: qcom: msm8998: Add a carveout for modem metadata
arm64: dts: qcom: sdm845: Add a carveout for modem metadata
arm64: dts: qcom: sc7180: Add a carveout for modem metadata
arm64: dts: qcom: sc7280: Add a carveout for modem metadata

.../remoteproc/qcom,msm8996-mss-pil.yaml | 393 ++++++++++++++++++
.../bindings/remoteproc/qcom,q6v5.txt | 137 +-----
.../remoteproc/qcom,sc7180-mss-pil.yaml | 3 +-
.../remoteproc/qcom,sc7280-mss-pil.yaml | 3 +-
.../boot/dts/qcom/msm8996-xiaomi-common.dtsi | 6 +
arch/arm64/boot/dts/qcom/msm8996.dtsi | 9 +
arch/arm64/boot/dts/qcom/msm8998.dtsi | 9 +
arch/arm64/boot/dts/qcom/sc7180-idp.dts | 7 +-
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 7 +-
.../dts/qcom/sc7280-herobrine-lte-sku.dtsi | 7 +-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 9 +
drivers/remoteproc/qcom_q6v5_mss.c | 48 ++-
12 files changed, 495 insertions(+), 143 deletions(-)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml

--
2.17.1


2023-01-11 12:12:06

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 01/10] dt-bindings: remoteproc: qcom,q6v5: Move MSM8996 to schema

Convert MSM8996 and similar (MSM8998/SDM845) MSS PIL bindings to schema.

Reviewed-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sibi Sankar <[email protected]>
---

v3:
* yaml description rewrite [Krzysztof]
* fix compatible property [Krzysztof]
* add blank lines and additionalProperties: false to
mba/mpss objects
* Pick R-b

.../remoteproc/qcom,msm8996-mss-pil.yaml | 377 ++++++++++++++++++
.../bindings/remoteproc/qcom,q6v5.txt | 137 +------
2 files changed, 382 insertions(+), 132 deletions(-)
create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml
new file mode 100644
index 000000000000..1aa5e5c7c2bd
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml
@@ -0,0 +1,377 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,msm8996-mss-pil.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm MSM8996 MSS Peripheral Image Loader (and similar)
+
+maintainers:
+ - Bjorn Andersson <[email protected]>
+ - Sibi Sankar <[email protected]>
+
+description:
+ MSS Peripheral Image Loader loads and boots firmware on the
+ Qualcomm Technology Inc. MSM8996 Modem Hexagon Core (and similar).
+
+properties:
+ compatible:
+ enum:
+ - qcom,msm8996-mss-pil
+ - qcom,msm8998-mss-pil
+ - qcom,sdm845-mss-pil
+
+ reg:
+ items:
+ - description: MSS QDSP6 registers
+ - description: RMB registers
+
+ reg-names:
+ items:
+ - const: qdsp6
+ - const: rmb
+
+ iommus:
+ items:
+ - description: MSA Stream 1
+ - description: MSA Stream 2
+
+ interrupts:
+ items:
+ - description: Watchdog interrupt
+ - description: Fatal interrupt
+ - description: Ready interrupt
+ - description: Handover interrupt
+ - description: Stop acknowledge interrupt
+ - description: Shutdown acknowledge interrupt
+
+ interrupt-names:
+ items:
+ - const: wdog
+ - const: fatal
+ - const: ready
+ - const: handover
+ - const: stop-ack
+ - const: shutdown-ack
+
+ clocks:
+ minItems: 8
+ maxItems: 9
+
+ clock-names:
+ minItems: 8
+ maxItems: 9
+
+ power-domains:
+ items:
+ - description: CX power domain
+ - description: MX power domain
+ - description: MSS power domain (only valid for qcom,sdm845-mss-pil)
+ minItems: 2
+
+ power-domain-names:
+ items:
+ - const: cx
+ - const: mx
+ - const: mss # only valid for qcom,sdm845-mss-pil
+ minItems: 2
+
+ pll-supply:
+ description: PLL supply
+
+ resets:
+ items:
+ - description: AOSS restart
+ - description: PDC reset (only valid for qcom,sdm845-mss-pil)
+ minItems: 1
+
+ reset-names:
+ items:
+ - const: mss_restart
+ - const: pdc_reset # only valid for qcom,sdm845-mss-pil
+ minItems: 1
+
+ qcom,qmp:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Reference to the AOSS side-channel message RAM.
+
+ qcom,smem-states:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description: States used by the AP to signal the Hexagon core
+ items:
+ - description: Stop modem
+
+ qcom,smem-state-names:
+ description: Names of the states used by the AP to signal the Hexagon core
+ items:
+ - const: stop
+
+ qcom,halt-regs:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ Halt registers are used to halt transactions of various sub-components
+ within MSS.
+ items:
+ - items:
+ - description: phandle to TCSR syscon region
+ - description: offset to the Q6 halt register
+ - description: offset to the modem halt register
+ - description: offset to the nc halt register
+
+ memory-region:
+ items:
+ - description: MBA reserved region
+ - description: Modem reserved region
+
+ firmware-name:
+ $ref: /schemas/types.yaml#/definitions/string-array
+ items:
+ - description: Name of MBA firmware
+ - description: Name of modem firmware
+
+ smd-edge:
+ $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
+ description:
+ Qualcomm Shared Memory subnode which represents communication edge,
+ channels and devices related to the Modem.
+ unevaluatedProperties: false
+
+ glink-edge:
+ $ref: /schemas/remoteproc/qcom,glink-edge.yaml#
+ description:
+ Qualcomm G-Link subnode which represents communication edge, channels
+ and devices related to the Modem.
+ unevaluatedProperties: false
+
+ # Deprecated properties
+ mba:
+ type: object
+ description:
+ MBA reserved region
+
+ properties:
+ memory-region: true
+
+ required:
+ - memory-region
+
+ additionalProperties: false
+ deprecated: true
+
+ mpss:
+ type: object
+ description:
+ MPSS reserved region
+
+ properties:
+ memory-region: true
+
+ required:
+ - memory-region
+
+ additionalProperties: false
+ deprecated: true
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - interrupts
+ - interrupt-names
+ - clocks
+ - clock-names
+ - power-domains
+ - power-domain-names
+ - resets
+ - reset-names
+ - qcom,halt-regs
+ - qcom,smem-states
+ - qcom,smem-state-names
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ const: qcom,msm8996-mss-pil
+ then:
+ properties:
+ clocks:
+ items:
+ - description: GCC MSS IFACE clock
+ - description: GCC MSS BUS clock
+ - description: GCC MSS MEM clock
+ - description: RPMH XO clock
+ - description: GCC MSS GPLL0 clock
+ - description: GCC MSS SNOC_AXI clock
+ - description: GCC MSS MNOC_AXI clock
+ - description: RPMH PNOC clock
+ - description: GCC MSS PRNG clock
+ - description: RPMH QDSS clock
+ clock-names:
+ items:
+ - const: iface
+ - const: bus
+ - const: mem
+ - const: xo
+ - const: gpll0_mss
+ - const: snoc_axi
+ - const: mnoc_axi
+ - const: pnoc
+ - const: qdss
+ glink-edge: false
+ required:
+ - pll-supply
+ - smd-edge
+ else:
+ properties:
+ pll-supply: false
+ smd-edge: false
+
+ - if:
+ properties:
+ compatible:
+ const: qcom,msm8998-mss-pil
+ then:
+ properties:
+ clocks:
+ items:
+ - description: GCC MSS IFACE clock
+ - description: GCC MSS BUS clock
+ - description: GCC MSS MEM clock
+ - description: GCC MSS GPLL0 clock
+ - description: GCC MSS SNOC_AXI clock
+ - description: GCC MSS MNOC_AXI clock
+ - description: RPMH QDSS clock
+ - description: RPMH XO clock
+ clock-names:
+ items:
+ - const: iface
+ - const: bus
+ - const: mem
+ - const: gpll0_mss
+ - const: snoc_axi
+ - const: mnoc_axi
+ - const: qdss
+ - const: xo
+ required:
+ - glink-edge
+
+ - if:
+ properties:
+ compatible:
+ const: qcom,sdm845-mss-pil
+ then:
+ properties:
+ power-domains:
+ minItems: 3
+ power-domain-names:
+ minItems: 3
+ resets:
+ minItems: 2
+ reset-names:
+ minItems: 2
+ clocks:
+ items:
+ - description: GCC MSS IFACE clock
+ - description: GCC MSS BUS clock
+ - description: GCC MSS MEM clock
+ - description: GCC MSS GPLL0 clock
+ - description: GCC MSS SNOC_AXI clock
+ - description: GCC MSS MNOC_AXI clock
+ - description: GCC MSS PRNG clock
+ - description: RPMH XO clock
+ clock-names:
+ items:
+ - const: iface
+ - const: bus
+ - const: mem
+ - const: gpll0_mss
+ - const: snoc_axi
+ - const: mnoc_axi
+ - const: prng
+ - const: xo
+ required:
+ - qcom,qmp
+ - glink-edge
+ else:
+ properties:
+ iommus: false
+ power-domains:
+ maxItems: 2
+ power-domain-names:
+ maxItems: 2
+ resets:
+ maxItems: 1
+ reset-names:
+ maxItems: 1
+ qcom,qmp: false
+
+ # Fallbacks for deprecated properties
+ - oneOf:
+ - required:
+ - memory-region
+ - required:
+ - mba
+ - mpss
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+ #include <dt-bindings/clock/qcom,rpmh.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/power/qcom-rpmpd.h>
+ #include <dt-bindings/reset/qcom,sdm845-aoss.h>
+ #include <dt-bindings/reset/qcom,sdm845-pdc.h>
+
+ remoteproc@4080000 {
+ compatible = "qcom,sdm845-mss-pil";
+ reg = <0x04080000 0x408>, <0x04180000 0x48>;
+ reg-names = "qdsp6", "rmb";
+
+ interrupts-extended = <&intc GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
+ <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack",
+ "shutdown-ack";
+
+ clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
+ <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
+ <&gcc GCC_BOOT_ROM_AHB_CLK>,
+ <&gcc GCC_MSS_GPLL0_DIV_CLK_SRC>,
+ <&gcc GCC_MSS_SNOC_AXI_CLK>,
+ <&gcc GCC_MSS_MFAB_AXIS_CLK>,
+ <&gcc GCC_PRNG_AHB_CLK>,
+ <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "iface", "bus", "mem", "gpll0_mss",
+ "snoc_axi", "mnoc_axi", "prng", "xo";
+
+ power-domains = <&rpmhpd SDM845_CX>,
+ <&rpmhpd SDM845_MX>,
+ <&rpmhpd SDM845_MSS>;
+ power-domain-names = "cx", "mx", "mss";
+
+ memory-region = <&mba_mem>, <&mpss_mem>;
+
+ resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
+ <&pdc_reset PDC_MODEM_SYNC_RESET>;
+ reset-names = "mss_restart", "pdc_reset";
+
+ qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
+
+ qcom,qmp = <&aoss_qmp>;
+
+ qcom,smem-states = <&modem_smp2p_out 0>;
+ qcom,smem-state-names = "stop";
+
+ glink-edge {
+ interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;
+ label = "modem";
+ qcom,remote-pid = <1>;
+ mboxes = <&apss_shared 12>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
index 5923c0447e2d..573a88b60677 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,q6v5.txt
@@ -9,9 +9,6 @@ on the Qualcomm Hexagon core.
Definition: must be one of:
"qcom,ipq8074-wcss-pil"
"qcom,qcs404-wcss-pil"
- "qcom,msm8996-mss-pil"
- "qcom,msm8998-mss-pil"
- "qcom,sdm845-mss-pil"

- reg:
Usage: required
@@ -32,23 +29,7 @@ on the Qualcomm Hexagon core.
- interrupt-names:
Usage: required
Value type: <stringlist>
- Definition: The interrupts needed depends on the compatible
- string:
- qcom,ipq8074-wcss-pil:
- qcom,qcs404-wcss-pil:
- must be "wdog", "fatal", "ready", "handover", "stop-ack"
- qcom,msm8996-mss-pil:
- qcom,msm8998-mss-pil:
- qcom,sdm845-mss-pil:
- must be "wdog", "fatal", "ready", "handover", "stop-ack",
- "shutdown-ack"
-
-- firmware-name:
- Usage: optional
- Value type: <stringlist>
- Definition: must list the relative firmware image paths for mba and
- modem. They are used for booting and authenticating the
- Hexagon core.
+ Definition: must be "wdog", "fatal", "ready", "handover", "stop-ack"

- clocks:
Usage: required
@@ -66,41 +47,23 @@ on the Qualcomm Hexagon core.
"gcc_axim_cbcr", "lcc_ahbfabric_cbc", "tcsr_lcc_cbc",
"lcc_abhs_cbc", "lcc_tcm_slave_cbc", "lcc_abhm_cbc",
"lcc_axim_cbc", "lcc_bcr_sleep"
- qcom,msm8996-mss-pil:
- must be "iface", "bus", "mem", "xo", "gpll0_mss",
- "snoc_axi", "mnoc_axi", "pnoc", "qdss"
- qcom,msm8998-mss-pil:
- must be "iface", "bus", "mem", "xo", "gpll0_mss",
- "snoc_axi", "mnoc_axi", "qdss"
- qcom,sdm845-mss-pil:
- must be "iface", "bus", "mem", "xo", "gpll0_mss",
- "snoc_axi", "mnoc_axi", "prng"

- resets:
Usage: required
Value type: <phandle>
- Definition: reference to the reset-controller for the modem sub-system
- reference to the list of 3 reset-controllers for the
+ Definition: reference to the list of 3 reset-controllers for the
wcss sub-system
- reference to the list of 2 reset-controllers for the modem
- sub-system on SDM845 SoCs

- reset-names:
Usage: required
Value type: <stringlist>
- Definition: must be "mss_restart" for the modem sub-system
- must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
+ Definition: must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
for the wcss sub-system
- must be "mss_restart", "pdc_reset" for the modem
- sub-system on SDM845 SoCs

-For devices where the mba and mpss sub-nodes are not specified, mba/mpss region
-should be referenced as follows:
- memory-region:
Usage: required
Value type: <phandle>
- Definition: reference to the reserved-memory for the mba region followed
- by the mpss region
+ Definition: reference to wcss reserved-memory region.

For the compatible string below the following supplies are required:
"qcom,qcs404-wcss-pil"
@@ -110,36 +73,6 @@ For the compatible string below the following supplies are required:
Definition: reference to the regulators to be held on behalf of the
booting of the Hexagon core

-For the compatible string below the following supplies are required:
- "qcom,msm8996-mss-pil"
-- pll-supply:
- Usage: required
- Value type: <phandle>
- Definition: reference to the regulators to be held on behalf of the
- booting of the Hexagon core
-
-- power-domains:
- Usage: required
- Value type: <phandle>
- Definition: reference to power-domains that match power-domain-names
-
-- power-domain-names:
- Usage: required
- Value type: <stringlist>
- Definition: The power-domains needed depend on the compatible string:
- qcom,ipq8074-wcss-pil:
- no power-domain names required
- qcom,msm8996-mss-pil:
- qcom,msm8998-mss-pil:
- must be "cx", "mx"
- qcom,sdm845-mss-pil:
- must be "cx", "mx", "mss"
-
-- qcom,qmp:
- Usage: optional
- Value type: <phandle>
- Definition: reference to the AOSS side-channel message RAM.
-
- qcom,smem-states:
Usage: required
Value type: <phandle>
@@ -155,16 +88,9 @@ For the compatible string below the following supplies are required:
Usage: required
Value type: <prop-encoded-array>
Definition: a phandle reference to a syscon representing TCSR followed
- by the three offsets within syscon for q6, modem and nc
+ by the three offsets within syscon for q6, wcss and nc
halt registers.

-The Hexagon node must contain iommus property as described in ../iommu/iommu.txt
-on platforms which do not have TrustZone.
-
-= SUBNODES:
-The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
-the memory regions used by the Hexagon firmware. Each sub-node must contain:
-
- memory-region:
Usage: required
Value type: <phandle>
@@ -174,56 +100,3 @@ The Hexagon node may also have an subnode named either "smd-edge" or
"glink-edge" that describes the communication edge, channels and devices
related to the Hexagon. See ../soc/qcom/qcom,smd.yaml and
../soc/qcom/qcom,glink.txt for details on how to describe these.
-
-= EXAMPLE
-The following example describes the resources needed to boot control the
-Hexagon, as it is found on MSM8974 boards.
-
- remoteproc@fc880000 {
- compatible = "qcom,msm8974-mss-pil";
- reg = <0xfc880000 0x100>, <0xfc820000 0x020>;
- reg-names = "qdsp6", "rmb";
-
- interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
- <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
- <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
- <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
- <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
- interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
-
- clocks = <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
- <&gcc GCC_MSS_CFG_AHB_CLK>,
- <&gcc GCC_BOOT_ROM_AHB_CLK>,
- <&xo_board>;
- clock-names = "iface", "bus", "mem", "xo";
-
- resets = <&gcc GCC_MSS_RESTART>;
- reset-names = "mss_restart";
-
- cx-supply = <&pm8841_s2>;
- mss-supply = <&pm8841_s3>;
- mx-supply = <&pm8841_s1>;
- pll-supply = <&pm8941_l12>;
-
- qcom,halt-regs = <&tcsr_mutex_block 0x1180 0x1200 0x1280>;
-
- qcom,smem-states = <&modem_smp2p_out 0>;
- qcom,smem-state-names = "stop";
-
- mba {
- memory-region = <&mba_region>;
- };
-
- mpss {
- memory-region = <&mpss_region>;
- };
-
- smd-edge {
- interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
-
- qcom,ipc = <&apcs 8 12>;
- qcom,smd-edge = <0>;
-
- label = "modem";
- };
- };
--
2.17.1

2023-01-11 12:13:16

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 08/10] arm64: dts: qcom: sdm845: Add a carveout for modem metadata

Add a new carveout for modem metadata on SDM845 SoCs.

Tested-by: Amit Pundir <[email protected]>
Signed-off-by: Sibi Sankar <[email protected]>
---

v2:
* Split dt/bindings per SoC [Krzysztof]

arch/arm64/boot/dts/qcom/sdm845.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 26c4f45b6152..ccdacd605620 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -122,6 +122,11 @@
qcom,vmid = <15>;
};

+ mdata_mem: memory@89700000 {
+ reg = <0 0x89700000 0 0x4000>;
+ no-map;
+ };
+
qseecom_mem: qseecom@8ab00000 {
reg = <0 0x8ab00000 0 0x1400000>;
no-map;
@@ -3351,6 +3356,10 @@
memory-region = <&mpss_region>;
};

+ metadata {
+ memory-region = <&mdata_mem>;
+ };
+
glink-edge {
interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;
label = "modem";
--
2.17.1

2023-01-11 12:16:04

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 09/10] arm64: dts: qcom: sc7180: Add a carveout for modem metadata

Add a new carveout for modem metadata on SC7180 SoCs.

Signed-off-by: Sibi Sankar <[email protected]>
---

v2:
* Split dt/bindings per SoC [Krzysztof]

arch/arm64/boot/dts/qcom/sc7180-idp.dts | 7 ++++++-
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi | 7 ++++++-
2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
index c7a22c7976b7..9b8b023577ca 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
@@ -80,6 +80,11 @@
reg = <0x0 0x94400000 0x0 0x200000>;
no-map;
};
+
+ mdata_mem: memory@94e00000 {
+ reg = <0x0 0x94e00000 0x0 0x4000>;
+ no-map;
+ };
};
};

@@ -382,7 +387,7 @@
clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";

iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
- memory-region = <&mba_mem &mpss_mem>;
+ memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;

resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
<&pdc_reset PDC_MODEM_SYNC_RESET>;
diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
index edb56c4d55a2..8b7652a94628 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
@@ -81,6 +81,11 @@
reg = <0x0 0x94400000 0x0 0x200000>;
no-map;
};
+
+ mdata_mem: memory@94e00000 {
+ reg = <0x0 0x94e00000 0x0 0x4000>;
+ no-map;
+ };
};

aliases {
@@ -865,7 +870,7 @@ hp_i2c: &i2c9 {
clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";

iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
- memory-region = <&mba_mem &mpss_mem>;
+ memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;

/* This gets overridden for SKUs with LTE support. */
firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
--
2.17.1

2023-01-11 12:28:17

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 03/10] dt-bindings: remoteproc: qcom,sc7180-mss-pil: Update memory-region

The dynamic memory region used for metadata authentication would still
be a part of the kernel mapping and any access to this region by the
application processor after assigning it to the remote Q6 will result
in a XPU violation. This is fixed by using a no-map carveout instead.
Update the bindings to reflect the addition of the new modem metadata
carveout on SC7180 SoC.

Reviewed-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sibi Sankar <[email protected]>
---

v3:
* remove double space [Krzysztof]
* Pickup R-b

v2:
* Pad commit message to explain bindings break [Krzysztof]
* Split dt/bindings per SoC [Krzysztof]

.../devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
index e4a7da8020f4..b1402bef0ebe 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
@@ -95,6 +95,7 @@ properties:
items:
- description: MBA reserved region
- description: modem reserved region
+ - description: metadata reserved region

firmware-name:
$ref: /schemas/types.yaml#/definitions/string-array
@@ -223,7 +224,7 @@ examples:
<&rpmhpd SC7180_MSS>;
power-domain-names = "cx", "mx", "mss";

- memory-region = <&mba_mem>, <&mpss_mem>;
+ memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;

qcom,qmp = <&aoss_qmp>;

--
2.17.1

2023-01-11 12:46:35

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 06/10] arm64: dts: qcom: msm8996: Add a carveout for modem metadata

Add a new carveout for modem metadata on MSM8996 SoCs.

Signed-off-by: Sibi Sankar <[email protected]>
---

v2:
* Split dt/bindings per SoC [Krzysztof]

arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi | 6 ++++++
arch/arm64/boot/dts/qcom/msm8996.dtsi | 9 +++++++++
2 files changed, 15 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi
index 5b47b8de69da..4242f8587c19 100644
--- a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-common.dtsi
@@ -127,6 +127,12 @@
reg = <0x0 0xf6f00000 0x0 0x100000>;
no-map;
};
+
+ /delete-node/ memory@91700000;
+ mdata_mem: memory@f7100000 {
+ reg = <0x0 0xf7100000 0x0 0x4000>;
+ no-map;
+ };
};

vph_pwr: vph-pwr-regulator {
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 87ff66ebde7b..2756ba5841a1 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -462,6 +462,11 @@
reg = <0x0 0x91500000 0x0 0x200000>;
no-map;
};
+
+ mdata_mem: memory@91700000 {
+ reg = <0x0 0x91700000 0x0 0x4000>;
+ no-map;
+ };
};

rpm-glink {
@@ -2462,6 +2467,10 @@
memory-region = <&mpss_mem>;
};

+ metadata {
+ memory-region = <&mdata_mem>;
+ };
+
smd-edge {
interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;

--
2.17.1

2023-01-11 12:47:51

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 05/10] remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem headers

Any access to the dynamically allocated metadata region by the application
processor after assigning it to the remote Q6 will result in a XPU
violation. Fix this by replacing the dynamically allocated memory region
with a no-map carveout and unmap the modem metadata memory region before
passing control to the remote Q6.

Reported-and-tested-by: Amit Pundir <[email protected]>
Fixes: 6c5a9dc2481b ("remoteproc: qcom: Make secure world call for mem ownership switch")
Signed-off-by: Sibi Sankar <[email protected]>
---

v3:
* Drop revert no_kernel_mapping since it's already on the list [Mani]
* kfree metadata from the branch for parity

drivers/remoteproc/qcom_q6v5_mss.c | 48 ++++++++++++++++++++++++++----
1 file changed, 42 insertions(+), 6 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index e2f765f87ec9..e25d44e20ae7 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -215,6 +215,7 @@ struct q6v5 {
size_t mba_size;
size_t dp_size;

+ phys_addr_t mdata_phys;
phys_addr_t mpss_phys;
phys_addr_t mpss_reloc;
size_t mpss_size;
@@ -973,15 +974,29 @@ static int q6v5_mpss_init_image(struct q6v5 *qproc, const struct firmware *fw,
if (IS_ERR(metadata))
return PTR_ERR(metadata);

- ptr = dma_alloc_attrs(qproc->dev, size, &phys, GFP_KERNEL, dma_attrs);
- if (!ptr) {
- kfree(metadata);
- dev_err(qproc->dev, "failed to allocate mdt buffer\n");
- return -ENOMEM;
+ if (qproc->mdata_phys) {
+ phys = qproc->mdata_phys;
+ ptr = memremap(qproc->mdata_phys, size, MEMREMAP_WC);
+ if (!ptr) {
+ kfree(metadata);
+ dev_err(qproc->dev, "unable to map memory region: %pa+%zx\n",
+ &qproc->mdata_phys, size);
+ return -EBUSY;
+ }
+ } else {
+ ptr = dma_alloc_attrs(qproc->dev, size, &phys, GFP_KERNEL, dma_attrs);
+ if (!ptr) {
+ kfree(metadata);
+ dev_err(qproc->dev, "failed to allocate mdt buffer\n");
+ return -ENOMEM;
+ }
}

memcpy(ptr, metadata, size);

+ if (qproc->mdata_phys)
+ memunmap(ptr);
+
/* Hypervisor mapping to access metadata by modem */
mdata_perm = BIT(QCOM_SCM_VMID_HLOS);
ret = q6v5_xfer_mem_ownership(qproc, &mdata_perm, false, true,
@@ -1010,7 +1025,8 @@ static int q6v5_mpss_init_image(struct q6v5 *qproc, const struct firmware *fw,
"mdt buffer not reclaimed system may become unstable\n");

free_dma_attrs:
- dma_free_attrs(qproc->dev, size, ptr, phys, dma_attrs);
+ if (!qproc->mdata_phys)
+ dma_free_attrs(qproc->dev, size, ptr, phys, dma_attrs);
kfree(metadata);

return ret < 0 ? ret : 0;
@@ -1893,6 +1909,26 @@ static int q6v5_alloc_memory_region(struct q6v5 *qproc)
qproc->mpss_phys = qproc->mpss_reloc = r.start;
qproc->mpss_size = resource_size(&r);

+ if (!child) {
+ node = of_parse_phandle(qproc->dev->of_node, "memory-region", 2);
+ } else {
+ child = of_get_child_by_name(qproc->dev->of_node, "metadata");
+ node = of_parse_phandle(child, "memory-region", 0);
+ of_node_put(child);
+ }
+
+ if (!node)
+ return 0;
+
+ ret = of_address_to_resource(node, 0, &r);
+ of_node_put(node);
+ if (ret) {
+ dev_err(qproc->dev, "unable to resolve metadata region\n");
+ return ret;
+ }
+
+ qproc->mdata_phys = r.start;
+
return 0;
}

--
2.17.1

2023-01-11 12:53:58

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 04/10] dt-bindings: remoteproc: qcom,sc7280-mss-pil: Update memory-region

The dynamic memory region used for metadata authentication would still
be a part of the kernel mapping and any access to this region by the
application processor after assigning it to the remote Q6 will result
in a XPU violation. This is fixed by using a no-map carveout instead.
Update the bindings to reflect the addition of the new modem metadata
carveout on SC7280 SoC.

Reviewed-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sibi Sankar <[email protected]>
---

v3:
* remove double space [Krzysztof]
* Pickup R-b

v2:
* Pad commit message to explain bindings break [Krzysztof]
* Split dt/bindings per SoC [Krzysztof]

.../devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml
index b4de0521a89d..005cb21732af 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml
@@ -95,6 +95,7 @@ properties:
items:
- description: MBA reserved region
- description: modem reserved region
+ - description: metadata reserved region

firmware-name:
$ref: /schemas/types.yaml#/definitions/string-array
@@ -240,7 +241,7 @@ examples:
<&rpmhpd SC7280_MSS>;
power-domain-names = "cx", "mss";

- memory-region = <&mba_mem>, <&mpss_mem>;
+ memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;

qcom,qmp = <&aoss_qmp>;

--
2.17.1

2023-01-11 12:56:31

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH V3 10/10] arm64: dts: qcom: sc7280: Add a carveout for modem metadata

Add a new carveout for modem metadata on SC7280 SoCs.

Signed-off-by: Sibi Sankar <[email protected]>
---

v2:
* Split dt/bindings per SoC [Krzysztof]

arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi b/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi
index efd513164501..3a4074d6e5b7 100644
--- a/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280-herobrine-lte-sku.dtsi
@@ -17,6 +17,11 @@
reg = <0x0 0x9c700000 0x0 0x200000>;
no-map;
};
+
+ mdata_mem: memory@9d100000 {
+ reg = <0x0 0x9d100000 0x0 0x4000>;
+ no-map;
+ };
};
};

@@ -37,7 +42,7 @@

iommus = <&apps_smmu 0x124 0x0>, <&apps_smmu 0x488 0x7>;
interconnects = <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>;
- memory-region = <&mba_mem>, <&mpss_mem>;
+ memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
firmware-name = "qcom/sc7280-herobrine/modem/mba.mbn",
"qcom/sc7280-herobrine/modem/qdsp6sw.mbn";

--
2.17.1

2023-01-11 13:48:35

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH V3 03/10] dt-bindings: remoteproc: qcom,sc7180-mss-pil: Update memory-region


On Wed, 11 Jan 2023 17:13:30 +0530, Sibi Sankar wrote:
> The dynamic memory region used for metadata authentication would still
> be a part of the kernel mapping and any access to this region by the
> application processor after assigning it to the remote Q6 will result
> in a XPU violation. This is fixed by using a no-map carveout instead.
> Update the bindings to reflect the addition of the new modem metadata
> carveout on SC7180 SoC.
>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
> Signed-off-by: Sibi Sankar <[email protected]>
> ---
>
> v3:
> * remove double space [Krzysztof]
> * Pickup R-b
>
> v2:
> * Pad commit message to explain bindings break [Krzysztof]
> * Split dt/bindings per SoC [Krzysztof]
>
> .../devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>

Running 'make dtbs_check' with the schema in this patch gives the
following warnings. Consider if they are expected or the schema is
incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check.
This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]


remoteproc@4080000: memory-region: [[105], [106]] is too short
arch/arm64/boot/dts/qcom/sc7180-idp.dtb

remoteproc@4080000: memory-region: [[122], [123]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-quackingstick-r0-lte.dtb

remoteproc@4080000: memory-region: [[123], [124]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev0-auo.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev0-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev1-auo.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev1-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-quackingstick-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev0-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev0-inx.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-boe-rt5682s.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-inx.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-inx-rt5682s.dtb

remoteproc@4080000: memory-region: [[128], [129]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel360-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel360-wifi.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-lte-parade.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-parade.dtb

remoteproc@4080000: memory-region: [[129], [130]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-lte-ti.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-ti.dtb

remoteproc@4080000: memory-region: [[130], [131]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb

remoteproc@4080000: memory-region: [[131], [132]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r2.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-kingoftown-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9-lte.dtb

remoteproc@4080000: memory-region: [[132], [133]] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-kingoftown-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r2.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r2-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-r1-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [110] is too short
arch/arm64/boot/dts/qcom/sc7180-idp.dtb

remoteproc@4080000: qcom,halt-regs:0: [127] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-quackingstick-r0-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [128] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev0-auo.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev0-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev1-auo.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-mrbland-rev1-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-quackingstick-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev0-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev0-inx.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-boe.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-boe-rt5682s.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-inx.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-wormdingler-rev1-inx-rt5682s.dtb

remoteproc@4080000: qcom,halt-regs:0: [133] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel360-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel360-wifi.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-lte-parade.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-parade.dtb

remoteproc@4080000: qcom,halt-regs:0: [134] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-lte-ti.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pazquel-ti.dtb

remoteproc@4080000: qcom,halt-regs:0: [135] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-nots-r5.dtb

remoteproc@4080000: qcom,halt-regs:0: [136] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r2.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-kingoftown-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r9-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [137] is too short
arch/arm64/boot/dts/qcom/sc7180-trogdor-homestar-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-kingoftown-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-limozeen-r4.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r0.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3-kb.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r1-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r2.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r2-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r3.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-pompom-r3-lte.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-r1.dtb
arch/arm64/boot/dts/qcom/sc7180-trogdor-r1-lte.dtb

2023-01-11 13:50:44

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH V3 04/10] dt-bindings: remoteproc: qcom,sc7280-mss-pil: Update memory-region


On Wed, 11 Jan 2023 17:13:31 +0530, Sibi Sankar wrote:
> The dynamic memory region used for metadata authentication would still
> be a part of the kernel mapping and any access to this region by the
> application processor after assigning it to the remote Q6 will result
> in a XPU violation. This is fixed by using a no-map carveout instead.
> Update the bindings to reflect the addition of the new modem metadata
> carveout on SC7280 SoC.
>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
> Signed-off-by: Sibi Sankar <[email protected]>
> ---
>
> v3:
> * remove double space [Krzysztof]
> * Pickup R-b
>
> v2:
> * Pad commit message to explain bindings break [Krzysztof]
> * Split dt/bindings per SoC [Krzysztof]
>
> .../devicetree/bindings/remoteproc/qcom,sc7280-mss-pil.yaml | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>

Running 'make dtbs_check' with the schema in this patch gives the
following warnings. Consider if they are expected or the schema is
incorrect. These may not be new warnings.

Note that it is not yet a requirement to have 0 warnings for dtbs_check.
This will change in the future.

Full log is available here: https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]


remoteproc@4080000: memory-region: [[226], [227]] is too short
arch/arm64/boot/dts/qcom/sc7280-idp.dtb

remoteproc@4080000: memory-region: [[231], [232]] is too short
arch/arm64/boot/dts/qcom/sc7280-idp2.dtb

remoteproc@4080000: memory-region: [[234], [235]] is too short
arch/arm64/boot/dts/qcom/sc7280-crd-r3.dtb

remoteproc@4080000: memory-region: [[240], [241]] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-villager-r0.dtb

remoteproc@4080000: memory-region: [[243], [244]] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-crd.dtb
arch/arm64/boot/dts/qcom/sc7280-herobrine-villager-r1-lte.dtb

remoteproc@4080000: memory-region: [[248], [249]] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-zombie-lte.dtb

remoteproc@4080000: memory-region: [[251], [252]] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-herobrine-r1.dtb

remoteproc@4080000: memory-region: [[252], [253]] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-evoker-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [231] is too short
arch/arm64/boot/dts/qcom/sc7280-idp.dtb

remoteproc@4080000: qcom,halt-regs:0: [236] is too short
arch/arm64/boot/dts/qcom/sc7280-idp2.dtb

remoteproc@4080000: qcom,halt-regs:0: [239] is too short
arch/arm64/boot/dts/qcom/sc7280-crd-r3.dtb

remoteproc@4080000: qcom,halt-regs:0: [245] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-villager-r0.dtb

remoteproc@4080000: qcom,halt-regs:0: [248] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-crd.dtb
arch/arm64/boot/dts/qcom/sc7280-herobrine-villager-r1-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [253] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-zombie-lte.dtb

remoteproc@4080000: qcom,halt-regs:0: [256] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-herobrine-r1.dtb

remoteproc@4080000: qcom,halt-regs:0: [257] is too short
arch/arm64/boot/dts/qcom/sc7280-herobrine-evoker-lte.dtb

2023-01-12 21:10:48

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH V3 03/10] dt-bindings: remoteproc: qcom,sc7180-mss-pil: Update memory-region

On Wed, Jan 11, 2023 at 05:13:30PM +0530, Sibi Sankar wrote:
> The dynamic memory region used for metadata authentication would still
> be a part of the kernel mapping and any access to this region by the
> application processor after assigning it to the remote Q6 will result
> in a XPU violation. This is fixed by using a no-map carveout instead.
> Update the bindings to reflect the addition of the new modem metadata
> carveout on SC7180 SoC.
>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
> Signed-off-by: Sibi Sankar <[email protected]>
> ---
>
> v3:
> * remove double space [Krzysztof]
> * Pickup R-b
>
> v2:
> * Pad commit message to explain bindings break [Krzysztof]
> * Split dt/bindings per SoC [Krzysztof]
>
> .../devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> index e4a7da8020f4..b1402bef0ebe 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> @@ -95,6 +95,7 @@ properties:
> items:
> - description: MBA reserved region
> - description: modem reserved region
> + - description: metadata reserved region

Based on dtbs_check, looks like you need 'minItems: 2'.

>
> firmware-name:
> $ref: /schemas/types.yaml#/definitions/string-array
> @@ -223,7 +224,7 @@ examples:
> <&rpmhpd SC7180_MSS>;
> power-domain-names = "cx", "mx", "mss";
>
> - memory-region = <&mba_mem>, <&mpss_mem>;
> + memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
>
> qcom,qmp = <&aoss_qmp>;
>
> --
> 2.17.1
>

2023-01-12 21:31:13

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH V3 03/10] dt-bindings: remoteproc: qcom,sc7180-mss-pil: Update memory-region

On Thu, Jan 12, 2023 at 2:17 PM Rob Herring <[email protected]> wrote:
>
> On Wed, Jan 11, 2023 at 05:13:30PM +0530, Sibi Sankar wrote:
> > The dynamic memory region used for metadata authentication would still
> > be a part of the kernel mapping and any access to this region by the
> > application processor after assigning it to the remote Q6 will result
> > in a XPU violation. This is fixed by using a no-map carveout instead.
> > Update the bindings to reflect the addition of the new modem metadata
> > carveout on SC7180 SoC.
> >
> > Reviewed-by: Krzysztof Kozlowski <[email protected]>
> > Signed-off-by: Sibi Sankar <[email protected]>
> > ---
> >
> > v3:
> > * remove double space [Krzysztof]
> > * Pickup R-b
> >
> > v2:
> > * Pad commit message to explain bindings break [Krzysztof]
> > * Split dt/bindings per SoC [Krzysztof]
> >
> > .../devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> > index e4a7da8020f4..b1402bef0ebe 100644
> > --- a/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> > +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sc7180-mss-pil.yaml
> > @@ -95,6 +95,7 @@ properties:
> > items:
> > - description: MBA reserved region
> > - description: modem reserved region
> > + - description: metadata reserved region
>
> Based on dtbs_check, looks like you need 'minItems: 2'.

NM, I see those are all sc7180.

Acked-by: Rob Herring <[email protected]>