Devicetree
 help / color / mirror / Atom feed
* [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support
@ 2026-05-22 19:49 Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 01/18] dt-bindings: firmware: qcom,scm: Add minidump SRAM property Mukesh Ojha
                   ` (17 more replies)
  0 siblings, 18 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

On most Qualcomm SoCs where minidump is supported, a word in always-on
SRAM is shared between the kernel and boot firmware. Before DDR is
initialised on the warm reset following a crash, firmware reads this
word to decide if minidump is enabled and collect a minidump and where
to deliver it (USB upload to a host, or save to local storage).

This series wires that mechanism into the SCM driver:

[1]- The SRAM word location is described via a 'sram' phandle on the
  SCM DT node.

[2]- Add minidump-sram pattern property for older soc which supports
  minidump destination support.

[3]- Trivial change for consistency.

[4]- A 'minidump_dest' module parameter (default: usb) selects the
  destination.  Custom kernel_param_ops expose it as the human-
  readable strings "usb" or "storage".

[5-18]- Add the support for Kaanapali and other various SoCs.

Changes in v3: https://lore.kernel.org/lkml/20260519171442.1582987-1-mukesh.ojha@oss.qualcomm.com/
 - Addressed some code improvement comments.
 - Removed example from scm binding.
 - Added minidump-sram binding which follows qcom,imem binding.
 - Added some more SoCs which supports this .

Changes in v2: https://lore.kernel.org/lkml/20260507080727.3227367-1-mukesh.ojha@oss.qualcomm.com/
 - Remove the restriction on the binding change done in v1.
 - Remove sram-name from binding.
 - sram definition is introduced and merged, so removed the refs from
   v1.
 - Minor change in the log as per comment s/find/get/
 - remove reference of sram-names
 - use minidump-sram instead of minidump-config.

Mukesh Ojha (18):
  dt-bindings: firmware: qcom,scm: Add minidump SRAM property
  dt-bindings: sram: qcom,imem: Add minidump-sram pattern property
  firmware: qcom: scm: use dev_err_probe() for dload address failure
  firmware: qcom: scm: Add minidump SRAM support
  arm64: dts: qcom: kaanapali: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm8450: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sa8775p: Add minidump SRAM config to SCM node
  arm64: dts: qcom: qcs8300: Add minidump SRAM config to SCM node
  arm64: dts: qcom: qdu1000: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm8550: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm8650: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sc7280: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm8350: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sc7180: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm6350: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sm6375: Add minidump SRAM config to SCM node
  arm64: dts: qcom: qcs615: Add minidump SRAM config to SCM node
  arm64: dts: qcom: sdm845: Add minidump SRAM config to SCM node

 .../bindings/firmware/qcom,scm.yaml           |  7 ++
 .../devicetree/bindings/sram/qcom,imem.yaml   | 16 ++++
 arch/arm64/boot/dts/qcom/kaanapali.dtsi       |  5 +
 arch/arm64/boot/dts/qcom/kodiak.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/lemans.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/monaco.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/qdu1000.dtsi         |  5 +
 arch/arm64/boot/dts/qcom/sc7180.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sdm845.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm6350.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm6375.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm8350.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm8450.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm8550.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/sm8650.dtsi          |  5 +
 arch/arm64/boot/dts/qcom/talos.dtsi           |  5 +
 drivers/firmware/qcom/qcom_scm.c              | 95 ++++++++++++++++++-
 17 files changed, 187 insertions(+), 1 deletion(-)

-- 
2.53.0


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 01/18] dt-bindings: firmware: qcom,scm: Add minidump SRAM property
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 02/18] dt-bindings: sram: qcom,imem: Add minidump-sram pattern property Mukesh Ojha
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

On most Qualcomm SoCs where minidump is supported, a word in always-on
SRAM is shared between the kernel and boot firmware. Before DDR is
initialised on the warm reset following a crash, firmware reads this
word to decide if minidump is enabled and collect a minidump and where
 to deliver it (USB upload to a host, or save to local storage).

Add a 'sram' property to the SCM binding to describe a region in
always-on SRAM where the minidump download destination value could be
written. Boot firmware reads it before DDR is initialised on a warm
reset to decide where to store the minidump either to host PC or to
on device storage.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 Documentation/devicetree/bindings/firmware/qcom,scm.yaml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/firmware/qcom,scm.yaml b/Documentation/devicetree/bindings/firmware/qcom,scm.yaml
index 25f62bacbc91..2d68b4065341 100644
--- a/Documentation/devicetree/bindings/firmware/qcom,scm.yaml
+++ b/Documentation/devicetree/bindings/firmware/qcom,scm.yaml
@@ -129,6 +129,13 @@ properties:
           - description: offset of the download mode control register
     description: TCSR hardware block
 
+  sram:
+    description:
+      Phandle to a region in always-on SRAM used to store the download
+      mode value for boot firmware to read before DDR is initialised on
+      the next warm reset.
+    maxItems: 1
+
 allOf:
   # Clocks
   - if:
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 02/18] dt-bindings: sram: qcom,imem: Add minidump-sram pattern property
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 01/18] dt-bindings: firmware: qcom,scm: Add minidump SRAM property Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 03/18] firmware: qcom: scm: use dev_err_probe() for dload address failure Mukesh Ojha
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Add a patternProperty for the minidump-sram child node to the qcom,imem
binding that describes a single word in always-on SRAM shared between
the kernel and boot firmware. Before DDR is initialized on the warm
reset following a crash, firmware reads this word to decide where to
deliver the minidump (USB or on-device storage).

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 .../devicetree/bindings/sram/qcom,imem.yaml      | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Documentation/devicetree/bindings/sram/qcom,imem.yaml b/Documentation/devicetree/bindings/sram/qcom,imem.yaml
index c63026904061..17adced6d3a4 100644
--- a/Documentation/devicetree/bindings/sram/qcom,imem.yaml
+++ b/Documentation/devicetree/bindings/sram/qcom,imem.yaml
@@ -67,6 +67,22 @@ properties:
     $ref: /schemas/power/reset/syscon-reboot-mode.yaml#
 
 patternProperties:
+  "^minidump-sram@[0-9a-f]+$":
+    type: object
+    description:
+      A word in always-on SRAM shared between the kernel and boot firmware.
+      Before DDR is initialised on the warm reset following a crash, firmware
+      reads this word to decide where to deliver the minidump (USB or storage).
+
+    properties:
+      reg:
+        maxItems: 1
+
+    required:
+      - reg
+
+    additionalProperties: false
+
   "^modem-tables@[0-9a-f]+$":
     type: object
     description:
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 03/18] firmware: qcom: scm: use dev_err_probe() for dload address failure
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 01/18] dt-bindings: firmware: qcom,scm: Add minidump SRAM property Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 02/18] dt-bindings: sram: qcom,imem: Add minidump-sram pattern property Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support Mukesh Ojha
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha, Konrad Dybcio, Dmitry Baryshkov

Replace the bare `return ret` after qcom_scm_find_dload_address() with
dev_err_probe() to produce a consistent, deferred-probe-aware error
message when the download-mode address cannot be resolved.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 drivers/firmware/qcom/qcom_scm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
index 9b06a69d3a6d..52432469badc 100644
--- a/drivers/firmware/qcom/qcom_scm.c
+++ b/drivers/firmware/qcom/qcom_scm.c
@@ -2747,7 +2747,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
 	scm->dev = &pdev->dev;
 	ret = qcom_scm_find_dload_address(&pdev->dev, &scm->dload_mode_addr);
 	if (ret < 0)
-		return ret;
+		return dev_err_probe(&pdev->dev, ret,
+				     "Failed to get download mode address\n");
 
 	mutex_init(&scm->scm_bw_lock);
 
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (2 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 03/18] firmware: qcom: scm: use dev_err_probe() for dload address failure Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 20:21   ` sashiko-bot
  2026-05-22 19:49 ` [PATCH v3 05/18] arm64: dts: qcom: kaanapali: Add minidump SRAM config to SCM node Mukesh Ojha
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

On most Qualcomm SoCs where minidump is supported, a word in always-on
SRAM is shared between the kernel and boot firmware. Before DDR is
initialised on the warm reset following a crash, firmware reads this
word to decide if minidump is enabled and collect a minidump and where
to deliver it (USB upload to a host, or save to local storage).

The SRAM region is described by a 'sram' phandle on the SCM DT node.
If the property is absent the feature is silently disabled, keeping
existing SoCs unaffected.

Expose a 'minidump_dest' module parameter (default: usb) so the user can
select the destination. Only the string names "usb" or "storage" are
acceptable values.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 drivers/firmware/qcom/qcom_scm.c | 92 ++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)

diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
index 52432469badc..5276a77834a0 100644
--- a/drivers/firmware/qcom/qcom_scm.c
+++ b/drivers/firmware/qcom/qcom_scm.c
@@ -57,6 +57,7 @@ struct qcom_scm {
 	int scm_vote_count;
 
 	u64 dload_mode_addr;
+	void __iomem *minidump_sram;
 
 	struct qcom_tzmem_pool *mempool;
 	unsigned int wq_cnt;
@@ -141,6 +142,20 @@ static const u8 qcom_scm_cpu_warm_bits[QCOM_SCM_BOOT_MAX_CPUS] = {
 #define QCOM_DLOAD_MINIDUMP	2
 #define QCOM_DLOAD_BOTHDUMP	3
 
+/* Minidump destination values written to always-on SRAM for boot firmware */
+#define QCOM_MINIDUMP_DEST_USB		0x0
+#define QCOM_MINIDUMP_DEST_STORAGE	0x2
+
+static u32 minidump_dest = QCOM_MINIDUMP_DEST_USB;
+
+static const struct {
+	const char *name;
+	u32 val;
+} minidump_dest_map[] = {
+	{ "usb",     QCOM_MINIDUMP_DEST_USB     },
+	{ "storage", QCOM_MINIDUMP_DEST_STORAGE },
+};
+
 #define QCOM_SCM_DEFAULT_WAITQ_COUNT 1
 
 static const char * const qcom_scm_convention_names[] = {
@@ -568,6 +583,14 @@ static void qcom_scm_set_download_mode(u32 dload_mode)
 
 	if (ret)
 		dev_err(__scm->dev, "failed to set download mode: %d\n", ret);
+
+	/*
+	 * Write the destination into the always-on SRAM so boot firmware
+	 * can read it before DDR is initialised on the next warm reset.
+	 * Only written when minidump is active;
+	 */
+	if (__scm->minidump_sram && (dload_mode & QCOM_DLOAD_MINIDUMP))
+		writel_relaxed(minidump_dest, __scm->minidump_sram);
 }
 
 /**
@@ -2040,6 +2063,29 @@ int qcom_scm_gpu_init_regs(u32 gpu_req)
 }
 EXPORT_SYMBOL_GPL(qcom_scm_gpu_init_regs);
 
+static int qcom_scm_map_minidump_sram(struct device *dev, void __iomem **out)
+{
+	struct device_node *np = dev->of_node;
+	struct device_node *sram_np;
+	struct resource res;
+	int ret;
+
+	sram_np = of_parse_phandle(np, "sram", 0);
+	if (!sram_np)
+		return 0;
+
+	ret = of_address_to_resource(sram_np, 0, &res);
+	of_node_put(sram_np);
+	if (ret)
+		return ret;
+
+	*out = devm_ioremap(dev, res.start, resource_size(&res));
+	if (!*out)
+		return -ENOMEM;
+
+	return 0;
+}
+
 static int qcom_scm_find_dload_address(struct device *dev, u64 *addr)
 {
 	struct device_node *tcsr;
@@ -2733,6 +2779,47 @@ static const struct kernel_param_ops download_mode_param_ops = {
 module_param_cb(download_mode, &download_mode_param_ops, NULL, 0644);
 MODULE_PARM_DESC(download_mode, "download mode: off/0/N for no dump mode, full/on/1/Y for full dump mode, mini for minidump mode and full,mini for both full and minidump mode together are acceptable values");
 
+static int get_minidump_dest(char *buffer, const struct kernel_param *kp)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(minidump_dest_map); i++)
+		if (minidump_dest == minidump_dest_map[i].val)
+			return sysfs_emit(buffer, "%s\n", minidump_dest_map[i].name);
+
+	return sysfs_emit(buffer, "unknown\n");
+}
+
+static int set_minidump_dest(const char *val, const struct kernel_param *kp)
+{
+	struct qcom_scm *scm;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(minidump_dest_map); i++)
+		if (sysfs_streq(val, minidump_dest_map[i].name))
+			break;
+
+	if (i >= ARRAY_SIZE(minidump_dest_map))
+		return -EINVAL;
+
+	minidump_dest = minidump_dest_map[i].val;
+
+	/* Pairs with smp_store_release() in qcom_scm_probe(). */
+	scm = smp_load_acquire(&__scm);
+	if (scm && scm->minidump_sram && (download_mode & QCOM_DLOAD_MINIDUMP))
+		writel_relaxed(minidump_dest, scm->minidump_sram);
+
+	return 0;
+}
+
+static const struct kernel_param_ops minidump_dest_param_ops = {
+	.get = get_minidump_dest,
+	.set = set_minidump_dest,
+};
+
+module_param_cb(minidump_dest, &minidump_dest_param_ops, NULL, 0644);
+MODULE_PARM_DESC(minidump_dest, "Minidump SRAM destination: usb (default) or storage");
+
 static int qcom_scm_probe(struct platform_device *pdev)
 {
 	struct qcom_tzmem_pool_config pool_config;
@@ -2750,6 +2837,11 @@ static int qcom_scm_probe(struct platform_device *pdev)
 		return dev_err_probe(&pdev->dev, ret,
 				     "Failed to get download mode address\n");
 
+	ret = qcom_scm_map_minidump_sram(&pdev->dev, &scm->minidump_sram);
+	if (ret < 0)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Failed to map minidump SRAM\n");
+
 	mutex_init(&scm->scm_bw_lock);
 
 	scm->path = devm_of_icc_get(&pdev->dev, NULL);
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 05/18] arm64: dts: qcom: kaanapali: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (3 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 06/18] arm64: dts: qcom: sm8450: " Mukesh Ojha
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha, Konrad Dybcio

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/kaanapali.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/kaanapali.dtsi b/arch/arm64/boot/dts/qcom/kaanapali.dtsi
index bcd1cee31356..425b532c53be 100644
--- a/arch/arm64/boot/dts/qcom/kaanapali.dtsi
+++ b/arch/arm64/boot/dts/qcom/kaanapali.dtsi
@@ -224,6 +224,7 @@ scm: scm {
 			qcom,dload-mode = <&tcsr 0x19000>;
 			interconnects = <&aggre_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
 					 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+			sram = <&minidump_config>;
 		};
 
 		scmi: scmi {
@@ -5448,6 +5449,10 @@ sram@14680000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-sram@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 06/18] arm64: dts: qcom: sm8450: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (4 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 05/18] arm64: dts: qcom: kaanapali: Add minidump SRAM config to SCM node Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 07/18] arm64: dts: qcom: sa8775p: " Mukesh Ojha
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm8450.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qcom/sm8450.dtsi
index e0c37ce3042a..d1fc5ef63a78 100644
--- a/arch/arm64/boot/dts/qcom/sm8450.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi
@@ -479,6 +479,7 @@ scm: scm {
 			compatible = "qcom,scm-sm8450", "qcom,scm";
 			qcom,dload-mode = <&tcsr 0x13000>;
 			interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
+			sram = <&minidump_config>;
 			#reset-cells = <1>;
 		};
 	};
@@ -4978,6 +4979,10 @@ sram@146aa000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 07/18] arm64: dts: qcom: sa8775p: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (5 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 06/18] arm64: dts: qcom: sm8450: " Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:49 ` [PATCH v3 08/18] arm64: dts: qcom: qcs8300: " Mukesh Ojha
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/lemans.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi
index bc7b4f65ad5e..634000fb22d4 100644
--- a/arch/arm64/boot/dts/qcom/lemans.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans.dtsi
@@ -524,6 +524,7 @@ firmware {
 		scm {
 			compatible = "qcom,scm-sa8775p", "qcom,scm";
 			qcom,dload-mode = <&tcsr 0x13000>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -6817,6 +6818,10 @@ sram: sram@146d8000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 08/18] arm64: dts: qcom: qcs8300: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (6 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 07/18] arm64: dts: qcom: sa8775p: " Mukesh Ojha
@ 2026-05-22 19:49 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 09/18] arm64: dts: qcom: qdu1000: " Mukesh Ojha
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:49 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/monaco.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/monaco.dtsi b/arch/arm64/boot/dts/qcom/monaco.dtsi
index 7b1d57460f1e..b408ad9c0844 100644
--- a/arch/arm64/boot/dts/qcom/monaco.dtsi
+++ b/arch/arm64/boot/dts/qcom/monaco.dtsi
@@ -634,6 +634,7 @@ firmware {
 		scm: scm {
 			compatible = "qcom,scm-qcs8300", "qcom,scm";
 			qcom,dload-mode = <&tcsr 0x13000>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -7150,6 +7151,10 @@ sram: sram@146d8000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 09/18] arm64: dts: qcom: qdu1000: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (7 preceding siblings ...)
  2026-05-22 19:49 ` [PATCH v3 08/18] arm64: dts: qcom: qcs8300: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 10/18] arm64: dts: qcom: sm8550: " Mukesh Ojha
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/qdu1000.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qdu1000.dtsi b/arch/arm64/boot/dts/qcom/qdu1000.dtsi
index 952d4270d118..0c6ae3ff06fb 100644
--- a/arch/arm64/boot/dts/qcom/qdu1000.dtsi
+++ b/arch/arm64/boot/dts/qcom/qdu1000.dtsi
@@ -171,6 +171,7 @@ cluster_sleep_1: cluster-sleep-1 {
 	firmware {
 		scm {
 			compatible = "qcom,scm-qdu1000", "qcom,scm";
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -1369,6 +1370,10 @@ sram@14680000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 10/18] arm64: dts: qcom: sm8550: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (8 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 09/18] arm64: dts: qcom: qdu1000: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 11/18] arm64: dts: qcom: sm8650: " Mukesh Ojha
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm8550.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi
index b7a7c49db077..27ef1de3edc6 100644
--- a/arch/arm64/boot/dts/qcom/sm8550.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi
@@ -391,6 +391,7 @@ scm: scm {
 			qcom,dload-mode = <&tcsr 0x19000>;
 			interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
 					 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -5533,6 +5534,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x2c000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@8000 {
 				reg = <0x8000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 11/18] arm64: dts: qcom: sm8650: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (9 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 10/18] arm64: dts: qcom: sm8550: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 12/18] arm64: dts: qcom: sc7280: " Mukesh Ojha
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm8650.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8650.dtsi b/arch/arm64/boot/dts/qcom/sm8650.dtsi
index 1604bc8cff37..cee4def3c51d 100644
--- a/arch/arm64/boot/dts/qcom/sm8650.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8650.dtsi
@@ -645,6 +645,7 @@ scm: scm {
 			qcom,dload-mode = <&tcsr 0x19000>;
 			interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
 					 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -7087,6 +7088,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x2c000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@8000 {
 				reg = <0x8000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 12/18] arm64: dts: qcom: sc7280: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (10 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 11/18] arm64: dts: qcom: sm8650: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 13/18] arm64: dts: qcom: sm8350: " Mukesh Ojha
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/kodiak.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/kodiak.dtsi b/arch/arm64/boot/dts/qcom/kodiak.dtsi
index c51beada8c7d..6a6560a3758a 100644
--- a/arch/arm64/boot/dts/qcom/kodiak.dtsi
+++ b/arch/arm64/boot/dts/qcom/kodiak.dtsi
@@ -720,6 +720,7 @@ firmware {
 		scm: scm {
 			compatible = "qcom,scm-sc7280", "qcom,scm";
 			qcom,dload-mode = <&tcsr_2 0x13000>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -6694,6 +6695,10 @@ sram@146a5000 {
 
 			ranges = <0 0 0x146a5000 0x6000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@3000 {
 				reg = <0x3000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 13/18] arm64: dts: qcom: sm8350: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (11 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 12/18] arm64: dts: qcom: sc7280: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 14/18] arm64: dts: qcom: sc7180: " Mukesh Ojha
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm8350.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index c830953156ec..dea97330da49 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -293,6 +293,7 @@ firmware {
 		scm: scm {
 			compatible = "qcom,scm-sm8350", "qcom,scm";
 			qcom,dload-mode = <&tcsr 0x13000>;
+			sram = <&minidump_config>;
 			#reset-cells = <1>;
 		};
 	};
@@ -3451,6 +3452,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x40000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@3d000 {
 				reg = <0x3d000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 14/18] arm64: dts: qcom: sc7180: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (12 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 13/18] arm64: dts: qcom: sm8350: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 15/18] arm64: dts: qcom: sm6350: " Mukesh Ojha
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sc7180.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index 8341a7c4a4c6..308a14339b3d 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -385,6 +385,7 @@ cluster_aoss_sleep: cluster-sleep-2 {
 	firmware {
 		scm: scm {
 			compatible = "qcom,scm-sc7180", "qcom,scm";
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -3592,6 +3593,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x2e000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@28000 {
 				reg = <0x28000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 15/18] arm64: dts: qcom: sm6350: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (13 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 14/18] arm64: dts: qcom: sc7180: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 16/18] arm64: dts: qcom: sm6375: " Mukesh Ojha
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm6350.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm6350.dtsi b/arch/arm64/boot/dts/qcom/sm6350.dtsi
index d6adf68563cb..06892ba22875 100644
--- a/arch/arm64/boot/dts/qcom/sm6350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6350.dtsi
@@ -363,6 +363,7 @@ big_cpu_sleep_1: cpu-sleep-1-1 {
 	firmware {
 		scm: scm {
 			compatible = "qcom,scm-sm6350", "qcom,scm";
+			sram = <&minidump_config>;
 			#reset-cells = <1>;
 		};
 	};
@@ -2808,6 +2809,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x2e000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@28000 {
 				reg = <0x28000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 16/18] arm64: dts: qcom: sm6375: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (14 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 15/18] arm64: dts: qcom: sm6350: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 17/18] arm64: dts: qcom: qcs615: " Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 18/18] arm64: dts: qcom: sdm845: " Mukesh Ojha
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sm6375.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm6375.dtsi b/arch/arm64/boot/dts/qcom/sm6375.dtsi
index ccf572bb1549..71a228597093 100644
--- a/arch/arm64/boot/dts/qcom/sm6375.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6375.dtsi
@@ -307,6 +307,7 @@ scm {
 			compatible = "qcom,scm-sm6375", "qcom,scm";
 			clocks = <&rpmcc RPM_SMD_CE1_CLK>;
 			clock-names = "core";
+			sram = <&minidump_config>;
 			#reset-cells = <1>;
 		};
 	};
@@ -1645,6 +1646,10 @@ sram@c125000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 17/18] arm64: dts: qcom: qcs615: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (15 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 16/18] arm64: dts: qcom: sm6375: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  2026-05-22 19:50 ` [PATCH v3 18/18] arm64: dts: qcom: sdm845: " Mukesh Ojha
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/talos.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/talos.dtsi b/arch/arm64/boot/dts/qcom/talos.dtsi
index fb1bbc51bb8a..a358d5441fa9 100644
--- a/arch/arm64/boot/dts/qcom/talos.dtsi
+++ b/arch/arm64/boot/dts/qcom/talos.dtsi
@@ -473,6 +473,7 @@ firmware {
 		scm {
 			compatible = "qcom,scm-qcs615", "qcom,scm";
 			qcom,dload-mode = <&tcsr 0x13000>;
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -4654,6 +4655,10 @@ sram@14680000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			pil-reloc@2a94c {
 				compatible = "qcom,pil-reloc-info";
 				reg = <0x2a94c 0xc8>;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 18/18] arm64: dts: qcom: sdm845: Add minidump SRAM config to SCM node
  2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
                   ` (16 preceding siblings ...)
  2026-05-22 19:50 ` [PATCH v3 17/18] arm64: dts: qcom: qcs615: " Mukesh Ojha
@ 2026-05-22 19:50 ` Mukesh Ojha
  17 siblings, 0 replies; 20+ messages in thread
From: Mukesh Ojha @ 2026-05-22 19:50 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Robert Marko, Guru Das Srinagesh
  Cc: cros-qcom-dts-watchers, linux-arm-msm, devicetree, linux-kernel,
	Mukesh Ojha

Point the SCM node at the minidump config slot in the always-on SRAM.
Boot firmware reads this word before DDR is initialised on a warm reset
to decide where to deliver the minidump.

Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/sdm845.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 4ae8627d6dbc..2179988dbaaf 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -363,6 +363,7 @@ cluster_sleep_0: cluster-sleep-0 {
 	firmware {
 		scm {
 			compatible = "qcom,scm-sdm845", "qcom,scm";
+			sram = <&minidump_config>;
 		};
 	};
 
@@ -5192,6 +5193,10 @@ sram@14680000 {
 
 			ranges = <0 0 0x14680000 0x40000>;
 
+			minidump_config: minidump-sram@1c {
+				reg = <0x1c 0x4>;
+			};
+
 			ipa_modem_tables: modem-tables@3d000 {
 				reg = <0x3d000 0x2000>;
 			};
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support
  2026-05-22 19:49 ` [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support Mukesh Ojha
@ 2026-05-22 20:21   ` sashiko-bot
  0 siblings, 0 replies; 20+ messages in thread
From: sashiko-bot @ 2026-05-22 20:21 UTC (permalink / raw)
  To: Mukesh Ojha; +Cc: conor+dt, devicetree, robh

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Missing smp_load_acquire() when reading the global __scm pointer in set_download_mode() risks a race condition and stale reads.
--

commit de197846d8ecb70e3382c65171f1e37949d3d114
Author: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>

firmware: qcom: scm: Add minidump SRAM support

On most Qualcomm SoCs where minidump is supported, a word in always-on
SRAM is shared between the kernel and boot firmware. This commit adds
minidump SRAM support and exposes a minidump_dest module parameter so
the user can select the destination.

> diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> --- a/drivers/firmware/qcom/qcom_scm.c
> +++ b/drivers/firmware/qcom/qcom_scm.c
[ ... ]
> @@ -568,6 +583,14 @@ static void qcom_scm_set_download_mode(u32 dload_mode)
>  
>  	if (ret)
>  		dev_err(__scm->dev, "failed to set download mode: %d\n", ret);
> +
> +	/*
> +	 * Write the destination into the always-on SRAM so boot firmware
> +	 * can read it before DDR is initialised on the next warm reset.
> +	 * Only written when minidump is active;
> +	 */
> +	if (__scm->minidump_sram && (dload_mode & QCOM_DLOAD_MINIDUMP))
> +		writel_relaxed(minidump_dest, __scm->minidump_sram);
>  }

[Severity: High]
This is a pre-existing issue, but is it safe to read the global __scm
pointer here without using smp_load_acquire()?

The driver publishes the global __scm pointer at the end of qcom_scm_probe()
using smp_store_release(&__scm, scm). Module parameters are exposed via
sysfs before probe completes, allowing userspace to concurrently trigger the
set_download_mode() callback.

This callback reads __scm using a plain, lockless memory access. Without a
matching smp_load_acquire(), the CPU can observe a non-NULL __scm pointer
while still seeing stale or uninitialized values for its members, including
the newly added __scm->minidump_sram.

Could this lead to an unaligned access or page fault if writel_relaxed()
is passed an uninitialized pointer? 

Note that the newly added set_minidump_dest() correctly uses
smp_load_acquire() to prevent this exact issue, but
qcom_scm_set_download_mode() remains unprotected.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260522195009.2961022-1-mukesh.ojha@oss.qualcomm.com?part=4

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-05-22 20:21 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-22 19:49 [PATCH v3 00/18] firmware: qcom: scm: Add minidump SRAM destination support Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 01/18] dt-bindings: firmware: qcom,scm: Add minidump SRAM property Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 02/18] dt-bindings: sram: qcom,imem: Add minidump-sram pattern property Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 03/18] firmware: qcom: scm: use dev_err_probe() for dload address failure Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 04/18] firmware: qcom: scm: Add minidump SRAM support Mukesh Ojha
2026-05-22 20:21   ` sashiko-bot
2026-05-22 19:49 ` [PATCH v3 05/18] arm64: dts: qcom: kaanapali: Add minidump SRAM config to SCM node Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 06/18] arm64: dts: qcom: sm8450: " Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 07/18] arm64: dts: qcom: sa8775p: " Mukesh Ojha
2026-05-22 19:49 ` [PATCH v3 08/18] arm64: dts: qcom: qcs8300: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 09/18] arm64: dts: qcom: qdu1000: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 10/18] arm64: dts: qcom: sm8550: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 11/18] arm64: dts: qcom: sm8650: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 12/18] arm64: dts: qcom: sc7280: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 13/18] arm64: dts: qcom: sm8350: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 14/18] arm64: dts: qcom: sc7180: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 15/18] arm64: dts: qcom: sm6350: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 16/18] arm64: dts: qcom: sm6375: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 17/18] arm64: dts: qcom: qcs615: " Mukesh Ojha
2026-05-22 19:50 ` [PATCH v3 18/18] arm64: dts: qcom: sdm845: " Mukesh Ojha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox