All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/5] remoteproc: qcom: PIL info support
@ 2020-05-13  5:56 Bjorn Andersson
  2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel

Introduce support for filling out the relocation information in IMEM, to aid
post mortem debug tools to locate the various remoteprocs.

Bjorn Andersson (5):
  dt-bindings: remoteproc: Add Qualcomm PIL info binding
  remoteproc: qcom: Introduce helper to store pil info in IMEM
  remoteproc: qcom: Update PIL relocation info on load
  arm64: dts: qcom: qcs404: Add IMEM and PIL info region
  arm64: dts: qcom: sdm845: Add IMEM and PIL info region

 .../bindings/remoteproc/qcom,pil-info.yaml    |  44 +++++++
 arch/arm64/boot/dts/qcom/qcs404.dtsi          |  15 +++
 arch/arm64/boot/dts/qcom/sdm845.dtsi          |  15 +++
 drivers/remoteproc/Kconfig                    |   6 +
 drivers/remoteproc/Makefile                   |   1 +
 drivers/remoteproc/qcom_pil_info.c            | 124 ++++++++++++++++++
 drivers/remoteproc/qcom_pil_info.h            |   7 +
 drivers/remoteproc/qcom_q6v5_adsp.c           |  16 ++-
 drivers/remoteproc/qcom_q6v5_mss.c            |   3 +
 drivers/remoteproc/qcom_q6v5_pas.c            |  15 ++-
 drivers/remoteproc/qcom_q6v5_wcss.c           |  14 +-
 drivers/remoteproc/qcom_wcnss.c               |  14 +-
 12 files changed, 262 insertions(+), 12 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
 create mode 100644 drivers/remoteproc/qcom_pil_info.c
 create mode 100644 drivers/remoteproc/qcom_pil_info.h

-- 
2.26.2


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

* [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
@ 2020-05-13  5:56 ` Bjorn Andersson
  2020-05-20 17:59   ` Mathieu Poirier
  2020-05-26 22:32   ` Rob Herring
  2020-05-13  5:56 ` [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM Bjorn Andersson
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Stephen Boyd

Add a devicetree binding for the Qualcomm peripheral image loader
relocation information region found in the IMEM.

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v4:
- Fixed reg in example to make it compile

 .../bindings/remoteproc/qcom,pil-info.yaml    | 44 +++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
new file mode 100644
index 000000000000..87c52316ddbd
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,pil-info.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm peripheral image loader relocation info binding
+
+maintainers:
+  - Bjorn Andersson <bjorn.andersson@linaro.org>
+
+description:
+  The Qualcomm peripheral image loader relocation memory region, in IMEM, is
+  used for communicating remoteproc relocation information to post mortem
+  debugging tools.
+
+properties:
+  compatible:
+    const: qcom,pil-reloc-info
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    imem@146bf000 {
+      compatible = "syscon", "simple-mfd";
+      reg = <0x146bf000 0x1000>;
+
+      #address-cells = <1>;
+      #size-cells = <1>;
+
+      ranges = <0 0x146bf000 0x1000>;
+
+      pil-reloc@94c {
+        compatible = "qcom,pil-reloc-info";
+        reg = <0x94c 0xc8>;
+      };
+    };
+...
-- 
2.26.2


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

* [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
  2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
@ 2020-05-13  5:56 ` Bjorn Andersson
  2020-05-20 18:00   ` Mathieu Poirier
  2020-05-13  5:56 ` [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load Bjorn Andersson
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel

A region in IMEM is used to communicate load addresses of remoteproc to
post mortem debug tools. Implement a helper function that can be used to
store this information in order to enable these tools to process
collected ramdumps.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v4:
- Replaced platform_driver by just a single helper function
- Lazy initialization of mapping
- Cleaned up search loop
- Replaced regmap access of IMEM with ioremap and normal accessors

 drivers/remoteproc/Kconfig         |   3 +
 drivers/remoteproc/Makefile        |   1 +
 drivers/remoteproc/qcom_pil_info.c | 124 +++++++++++++++++++++++++++++
 drivers/remoteproc/qcom_pil_info.h |   7 ++
 4 files changed, 135 insertions(+)
 create mode 100644 drivers/remoteproc/qcom_pil_info.c
 create mode 100644 drivers/remoteproc/qcom_pil_info.h

diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index fbaed079b299..8088ca4dd6dc 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -107,6 +107,9 @@ config KEYSTONE_REMOTEPROC
 	  It's safe to say N here if you're not interested in the Keystone
 	  DSPs or just want to use a bare minimum kernel.
 
+config QCOM_PIL_INFO
+	tristate
+
 config QCOM_RPROC_COMMON
 	tristate
 
diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
index 0effd3825035..cc0f631adb3b 100644
--- a/drivers/remoteproc/Makefile
+++ b/drivers/remoteproc/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_OMAP_REMOTEPROC)		+= omap_remoteproc.o
 obj-$(CONFIG_WKUP_M3_RPROC)		+= wkup_m3_rproc.o
 obj-$(CONFIG_DA8XX_REMOTEPROC)		+= da8xx_remoteproc.o
 obj-$(CONFIG_KEYSTONE_REMOTEPROC)	+= keystone_remoteproc.o
+obj-$(CONFIG_QCOM_PIL_INFO)		+= qcom_pil_info.o
 obj-$(CONFIG_QCOM_RPROC_COMMON)		+= qcom_common.o
 obj-$(CONFIG_QCOM_Q6V5_COMMON)		+= qcom_q6v5.o
 obj-$(CONFIG_QCOM_Q6V5_ADSP)		+= qcom_q6v5_adsp.o
diff --git a/drivers/remoteproc/qcom_pil_info.c b/drivers/remoteproc/qcom_pil_info.c
new file mode 100644
index 000000000000..0785c7cde2d3
--- /dev/null
+++ b/drivers/remoteproc/qcom_pil_info.c
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2019-2020 Linaro Ltd.
+ */
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/of_address.h>
+
+#define PIL_RELOC_NAME_LEN	8
+
+struct pil_reloc_entry {
+	char name[PIL_RELOC_NAME_LEN];
+	__le64 base;
+	__le32 size;
+} __packed;
+
+struct pil_reloc {
+	struct device *dev;
+	void __iomem *base;
+	size_t num_entries;
+};
+
+static struct pil_reloc _reloc __read_mostly;
+static DEFINE_MUTEX(reloc_mutex);
+
+static int qcom_pil_info_init(void)
+{
+	struct device_node *np;
+	struct resource imem;
+	void __iomem *base;
+	int ret;
+
+	/* Already initialized? */
+	if (_reloc.base)
+		return 0;
+
+	np = of_find_compatible_node(NULL, NULL, "qcom,pil-reloc-info");
+	if (!np)
+		return -ENOENT;
+
+	ret = of_address_to_resource(np, 0, &imem);
+	of_node_put(np);
+	if (ret < 0)
+		return ret;
+
+	base = ioremap(imem.start, resource_size(&imem));
+	if (!base) {
+		pr_err("failed to map PIL relocation info region\n");
+		return -ENOMEM;
+	}
+
+	memset_io(base, 0, resource_size(&imem));
+
+	_reloc.base = base;
+	_reloc.num_entries = resource_size(&imem) / sizeof(struct pil_reloc_entry);
+
+	return 0;
+}
+
+/**
+ * qcom_pil_info_store() - store PIL information of image in IMEM
+ * @image:	name of the image
+ * @base:	base address of the loaded image
+ * @size:	size of the loaded image
+ *
+ * Return: 0 on success, negative errno on failure
+ */
+int qcom_pil_info_store(const char *image, phys_addr_t base, size_t size)
+{
+	char buf[PIL_RELOC_NAME_LEN];
+	void __iomem *entry;
+	int ret;
+	int i;
+
+	mutex_lock(&reloc_mutex);
+	ret = qcom_pil_info_init();
+	if (ret < 0) {
+		mutex_unlock(&reloc_mutex);
+		return ret;
+	}
+
+	for (i = 0; i < _reloc.num_entries; i++) {
+		entry = _reloc.base + i * sizeof(struct pil_reloc_entry);
+
+		memcpy_fromio(buf, entry, PIL_RELOC_NAME_LEN);
+
+		/*
+		 * An empty record means we didn't find it, given that the
+		 * records are packed.
+		 */
+		if (!buf[0])
+			goto found_unused;
+
+		if (!strncmp(buf, image, PIL_RELOC_NAME_LEN))
+			goto found_existing;
+	}
+
+	pr_warn("insufficient PIL info slots\n");
+	mutex_unlock(&reloc_mutex);
+	return -ENOMEM;
+
+found_unused:
+	memcpy_toio(entry, image, PIL_RELOC_NAME_LEN);
+found_existing:
+	writel(base, entry + offsetof(struct pil_reloc_entry, base));
+	writel(size, entry + offsetof(struct pil_reloc_entry, size));
+	mutex_unlock(&reloc_mutex);
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(qcom_pil_info_store);
+
+static void __exit pil_reloc_exit(void)
+{
+	mutex_lock(&reloc_mutex);
+	iounmap(_reloc.base);
+	_reloc.base = NULL;
+	mutex_unlock(&reloc_mutex);
+}
+module_exit(pil_reloc_exit);
+
+MODULE_DESCRIPTION("Qualcomm PIL relocation info");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/remoteproc/qcom_pil_info.h b/drivers/remoteproc/qcom_pil_info.h
new file mode 100644
index 000000000000..1b89a63ba82f
--- /dev/null
+++ b/drivers/remoteproc/qcom_pil_info.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __QCOM_PIL_INFO_H__
+#define __QCOM_PIL_INFO_H__
+
+int qcom_pil_info_store(const char *image, phys_addr_t base, size_t size);
+
+#endif
-- 
2.26.2


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

* [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
  2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
  2020-05-13  5:56 ` [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM Bjorn Andersson
@ 2020-05-13  5:56 ` Bjorn Andersson
  2020-05-14 18:48     ` kbuild test robot
  2020-05-19 18:14   ` rishabhb
  2020-05-13  5:56 ` [PATCH v5 4/5] arm64: dts: qcom: qcs404: Add IMEM and PIL info region Bjorn Andersson
                   ` (2 subsequent siblings)
  5 siblings, 2 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel

Update the PIL relocation information in IMEM with information about
where the firmware for various remoteprocs are loaded.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v4:
- Dropped unnecessary comment about ignoring return value.

 drivers/remoteproc/Kconfig          |  3 +++
 drivers/remoteproc/qcom_q6v5_adsp.c | 16 +++++++++++++---
 drivers/remoteproc/qcom_q6v5_mss.c  |  3 +++
 drivers/remoteproc/qcom_q6v5_pas.c  | 15 ++++++++++++---
 drivers/remoteproc/qcom_q6v5_wcss.c | 14 +++++++++++---
 drivers/remoteproc/qcom_wcnss.c     | 14 +++++++++++---
 6 files changed, 53 insertions(+), 12 deletions(-)

diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index 8088ca4dd6dc..6bd42a411ca8 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -126,6 +126,7 @@ config QCOM_Q6V5_ADSP
 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
 	depends on QCOM_SYSMON || QCOM_SYSMON=n
 	select MFD_SYSCON
+	select QCOM_PIL_INFO
 	select QCOM_MDT_LOADER
 	select QCOM_Q6V5_COMMON
 	select QCOM_RPROC_COMMON
@@ -158,6 +159,7 @@ config QCOM_Q6V5_PAS
 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
 	depends on QCOM_SYSMON || QCOM_SYSMON=n
 	select MFD_SYSCON
+	select QCOM_PIL_INFO
 	select QCOM_MDT_LOADER
 	select QCOM_Q6V5_COMMON
 	select QCOM_RPROC_COMMON
@@ -209,6 +211,7 @@ config QCOM_WCNSS_PIL
 	depends on QCOM_SMEM
 	depends on QCOM_SYSMON || QCOM_SYSMON=n
 	select QCOM_MDT_LOADER
+	select QCOM_PIL_INFO
 	select QCOM_RPROC_COMMON
 	select QCOM_SCM
 	help
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index d2a2574dcf35..c539e89664cb 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -26,6 +26,7 @@
 #include <linux/soc/qcom/smem_state.h>
 
 #include "qcom_common.h"
+#include "qcom_pil_info.h"
 #include "qcom_q6v5.h"
 #include "remoteproc_internal.h"
 
@@ -82,6 +83,7 @@ struct qcom_adsp {
 	unsigned int halt_lpass;
 
 	int crash_reason_smem;
+	const char *info_name;
 
 	struct completion start_done;
 	struct completion stop_done;
@@ -164,10 +166,17 @@ static int qcom_adsp_shutdown(struct qcom_adsp *adsp)
 static int adsp_load(struct rproc *rproc, const struct firmware *fw)
 {
 	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
+	int ret;
+
+	ret = qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
+				    adsp->mem_region, adsp->mem_phys,
+				    adsp->mem_size, &adsp->mem_reloc);
+	if (ret)
+		return ret;
+
+	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, adsp->mem_size);
 
-	return qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
-			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
-			     &adsp->mem_reloc);
+	return 0;
 }
 
 static int adsp_start(struct rproc *rproc)
@@ -436,6 +445,7 @@ static int adsp_probe(struct platform_device *pdev)
 	adsp = (struct qcom_adsp *)rproc->priv;
 	adsp->dev = &pdev->dev;
 	adsp->rproc = rproc;
+	adsp->info_name = desc->sysmon_name;
 	platform_set_drvdata(pdev, adsp);
 
 	ret = adsp_alloc_memory_region(adsp);
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index c4936f4d1e80..fdbcae11ae64 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -29,6 +29,7 @@
 
 #include "remoteproc_internal.h"
 #include "qcom_common.h"
+#include "qcom_pil_info.h"
 #include "qcom_q6v5.h"
 
 #include <linux/qcom_scm.h>
@@ -1221,6 +1222,8 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
 	else if (ret < 0)
 		dev_err(qproc->dev, "MPSS authentication failed: %d\n", ret);
 
+	qcom_pil_info_store("modem", mpss_reloc, qproc->mpss_size);
+
 release_firmware:
 	release_firmware(fw);
 out:
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 3bb69f58e086..84cb19231c35 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -25,6 +25,7 @@
 #include <linux/soc/qcom/smem_state.h>
 
 #include "qcom_common.h"
+#include "qcom_pil_info.h"
 #include "qcom_q6v5.h"
 #include "remoteproc_internal.h"
 
@@ -64,6 +65,7 @@ struct qcom_adsp {
 	int pas_id;
 	int crash_reason_smem;
 	bool has_aggre2_clk;
+	const char *info_name;
 
 	struct completion start_done;
 	struct completion stop_done;
@@ -117,11 +119,17 @@ static void adsp_pds_disable(struct qcom_adsp *adsp, struct device **pds,
 static int adsp_load(struct rproc *rproc, const struct firmware *fw)
 {
 	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
+	int ret;
 
-	return qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
-			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
-			     &adsp->mem_reloc);
+	ret = qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
+			    adsp->mem_region, adsp->mem_phys, adsp->mem_size,
+			    &adsp->mem_reloc);
+	if (ret)
+		return ret;
 
+	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, adsp->mem_size);
+
+	return 0;
 }
 
 static int adsp_start(struct rproc *rproc)
@@ -405,6 +413,7 @@ static int adsp_probe(struct platform_device *pdev)
 	adsp->rproc = rproc;
 	adsp->pas_id = desc->pas_id;
 	adsp->has_aggre2_clk = desc->has_aggre2_clk;
+	adsp->info_name = desc->sysmon_name;
 	platform_set_drvdata(pdev, adsp);
 
 	ret = adsp_alloc_memory_region(adsp);
diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c
index f1924b740a10..962e37a86b8b 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -421,10 +421,18 @@ static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, size_t len)
 static int q6v5_wcss_load(struct rproc *rproc, const struct firmware *fw)
 {
 	struct q6v5_wcss *wcss = rproc->priv;
+	int ret;
+
+	ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
+				    0, wcss->mem_region, wcss->mem_phys,
+				    wcss->mem_size, &wcss->mem_reloc);
+	if (ret)
+		return ret;
+
+	/* Failures only affect post mortem debugging, so ignore return value */
+	qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
 
-	return qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
-				     0, wcss->mem_region, wcss->mem_phys,
-				     wcss->mem_size, &wcss->mem_reloc);
+	return ret;
 }
 
 static const struct rproc_ops q6v5_wcss_ops = {
diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
index 5d65e1a9329a..229482b3231f 100644
--- a/drivers/remoteproc/qcom_wcnss.c
+++ b/drivers/remoteproc/qcom_wcnss.c
@@ -27,6 +27,7 @@
 
 #include "qcom_common.h"
 #include "remoteproc_internal.h"
+#include "qcom_pil_info.h"
 #include "qcom_wcnss.h"
 
 #define WCNSS_CRASH_REASON_SMEM		422
@@ -145,10 +146,17 @@ void qcom_wcnss_assign_iris(struct qcom_wcnss *wcnss,
 static int wcnss_load(struct rproc *rproc, const struct firmware *fw)
 {
 	struct qcom_wcnss *wcnss = (struct qcom_wcnss *)rproc->priv;
+	int ret;
+
+	ret = qcom_mdt_load(wcnss->dev, fw, rproc->firmware, WCNSS_PAS_ID,
+			    wcnss->mem_region, wcnss->mem_phys,
+			    wcnss->mem_size, &wcnss->mem_reloc);
+	if (ret)
+		return ret;
+
+	qcom_pil_info_store("wcnss", wcnss->mem_reloc, wcnss->mem_size);
 
-	return qcom_mdt_load(wcnss->dev, fw, rproc->firmware, WCNSS_PAS_ID,
-			     wcnss->mem_region, wcnss->mem_phys,
-			     wcnss->mem_size, &wcnss->mem_reloc);
+	return 0;
 }
 
 static void wcnss_indicate_nv_download(struct qcom_wcnss *wcnss)
-- 
2.26.2


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

* [PATCH v5 4/5] arm64: dts: qcom: qcs404: Add IMEM and PIL info region
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
                   ` (2 preceding siblings ...)
  2020-05-13  5:56 ` [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load Bjorn Andersson
@ 2020-05-13  5:56 ` Bjorn Andersson
  2020-05-13  5:56 ` [PATCH v5 5/5] arm64: dts: qcom: sdm845: " Bjorn Andersson
  2020-05-14 16:53 ` [PATCH v5 0/5] remoteproc: qcom: PIL info support Vinod Koul
  5 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Stephen Boyd

Add a simple-mfd representing IMEM on QCS404 and define the PIL
relocation info region, so that post mortem tools will be able to locate
the loaded remoteprocs.

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v4:
- imem is no longer compatible with "syscon"

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

diff --git a/arch/arm64/boot/dts/qcom/qcs404.dtsi b/arch/arm64/boot/dts/qcom/qcs404.dtsi
index c685a1664810..b654b802e95c 100644
--- a/arch/arm64/boot/dts/qcom/qcs404.dtsi
+++ b/arch/arm64/boot/dts/qcom/qcs404.dtsi
@@ -1097,6 +1097,21 @@ blsp2_spi0: spi@7af5000 {
 			status = "disabled";
 		};
 
+		imem@8600000 {
+			compatible = "simple-mfd";
+			reg = <0x08600000 0x1000>;
+
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			ranges = <0 0x08600000 0x1000>;
+
+			pil-reloc@94c {
+				compatible = "qcom,pil-reloc-info";
+				reg = <0x94c 0xc8>;
+			};
+		};
+
 		intc: interrupt-controller@b000000 {
 			compatible = "qcom,msm-qgic2";
 			interrupt-controller;
-- 
2.26.2


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

* [PATCH v5 5/5] arm64: dts: qcom: sdm845: Add IMEM and PIL info region
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
                   ` (3 preceding siblings ...)
  2020-05-13  5:56 ` [PATCH v5 4/5] arm64: dts: qcom: qcs404: Add IMEM and PIL info region Bjorn Andersson
@ 2020-05-13  5:56 ` Bjorn Andersson
  2020-05-14 16:53 ` [PATCH v5 0/5] remoteproc: qcom: PIL info support Vinod Koul
  5 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-13  5:56 UTC (permalink / raw)
  To: Andy Gross, Bjorn Andersson, Ohad Ben-Cohen, Rob Herring
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel, Stephen Boyd

Add a simple-mfd representing IMEM on SDM845 and define the PIL
relocation info region, so that post mortem tools will be able to locate
the loaded remoteprocs.

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v4:
- imem is no longer compatible with "syscon"

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

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 7cce6f1b7c9e..1abbbe7a43a0 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -3716,6 +3716,21 @@ spmi_bus: spmi@c440000 {
 			cell-index = <0>;
 		};
 
+		imem@146bf000 {
+			compatible = "simple-mfd";
+			reg = <0 0x146bf000 0 0x1000>;
+
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			ranges = <0 0 0x146bf000 0x1000>;
+
+			pil-reloc@94c {
+				compatible = "qcom,pil-reloc-info";
+				reg = <0x94c 0xc8>;
+			};
+		};
+
 		apps_smmu: iommu@15000000 {
 			compatible = "qcom,sdm845-smmu-500", "arm,mmu-500";
 			reg = <0 0x15000000 0 0x80000>;
-- 
2.26.2


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

* Re: [PATCH v5 0/5] remoteproc: qcom: PIL info support
  2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
                   ` (4 preceding siblings ...)
  2020-05-13  5:56 ` [PATCH v5 5/5] arm64: dts: qcom: sdm845: " Bjorn Andersson
@ 2020-05-14 16:53 ` Vinod Koul
  5 siblings, 0 replies; 14+ messages in thread
From: Vinod Koul @ 2020-05-14 16:53 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Andy Gross, Ohad Ben-Cohen, Rob Herring, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 12-05-20, 22:56, Bjorn Andersson wrote:
> Introduce support for filling out the relocation information in IMEM, to aid
> post mortem debug tools to locate the various remoteprocs.

Reviewed-by: Vinod Koul <vkoul@kernel.org>

-- 
~Vinod

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

* Re: [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load
  2020-05-13  5:56 ` [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load Bjorn Andersson
@ 2020-05-14 18:48     ` kbuild test robot
  2020-05-19 18:14   ` rishabhb
  1 sibling, 0 replies; 14+ messages in thread
From: kbuild test robot @ 2020-05-14 18:48 UTC (permalink / raw)
  To: Bjorn Andersson, Andy Gross, Ohad Ben-Cohen, Rob Herring
  Cc: kbuild-all, linux-arm-msm, linux-remoteproc, devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2336 bytes --]

Hi Bjorn,

I love your patch! Yet something to improve:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v5.7-rc5 next-20200514]
[cannot apply to agross-msm/qcom/for-next remoteproc/for-next rpmsg/for-next hwspinlock/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Bjorn-Andersson/remoteproc-qcom-PIL-info-support/20200514-161851
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

drivers/remoteproc/qcom_q6v5_wcss.c: In function 'q6v5_wcss_load':
>> drivers/remoteproc/qcom_q6v5_wcss.c:433:2: error: implicit declaration of function 'qcom_pil_info_store' [-Werror=implicit-function-declaration]
433 |  qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
|  ^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/qcom_pil_info_store +433 drivers/remoteproc/qcom_q6v5_wcss.c

   420	
   421	static int q6v5_wcss_load(struct rproc *rproc, const struct firmware *fw)
   422	{
   423		struct q6v5_wcss *wcss = rproc->priv;
   424		int ret;
   425	
   426		ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
   427					    0, wcss->mem_region, wcss->mem_phys,
   428					    wcss->mem_size, &wcss->mem_reloc);
   429		if (ret)
   430			return ret;
   431	
   432		/* Failures only affect post mortem debugging, so ignore return value */
 > 433		qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
   434	
   435		return ret;
   436	}
   437	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 71781 bytes --]

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

* Re: [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load
@ 2020-05-14 18:48     ` kbuild test robot
  0 siblings, 0 replies; 14+ messages in thread
From: kbuild test robot @ 2020-05-14 18:48 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2394 bytes --]

Hi Bjorn,

I love your patch! Yet something to improve:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v5.7-rc5 next-20200514]
[cannot apply to agross-msm/qcom/for-next remoteproc/for-next rpmsg/for-next hwspinlock/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Bjorn-Andersson/remoteproc-qcom-PIL-info-support/20200514-161851
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

drivers/remoteproc/qcom_q6v5_wcss.c: In function 'q6v5_wcss_load':
>> drivers/remoteproc/qcom_q6v5_wcss.c:433:2: error: implicit declaration of function 'qcom_pil_info_store' [-Werror=implicit-function-declaration]
433 |  qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
|  ^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/qcom_pil_info_store +433 drivers/remoteproc/qcom_q6v5_wcss.c

   420	
   421	static int q6v5_wcss_load(struct rproc *rproc, const struct firmware *fw)
   422	{
   423		struct q6v5_wcss *wcss = rproc->priv;
   424		int ret;
   425	
   426		ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
   427					    0, wcss->mem_region, wcss->mem_phys,
   428					    wcss->mem_size, &wcss->mem_reloc);
   429		if (ret)
   430			return ret;
   431	
   432		/* Failures only affect post mortem debugging, so ignore return value */
 > 433		qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
   434	
   435		return ret;
   436	}
   437	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 71781 bytes --]

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

* Re: [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load
  2020-05-13  5:56 ` [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load Bjorn Andersson
  2020-05-14 18:48     ` kbuild test robot
@ 2020-05-19 18:14   ` rishabhb
  2020-05-19 23:07     ` Bjorn Andersson
  1 sibling, 1 reply; 14+ messages in thread
From: rishabhb @ 2020-05-19 18:14 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Andy Gross, Ohad Ben-Cohen, Rob Herring, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel,
	linux-remoteproc-owner

On 2020-05-12 22:56, Bjorn Andersson wrote:
> Update the PIL relocation information in IMEM with information about
> where the firmware for various remoteprocs are loaded.
> 
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> 
> Changes since v4:
> - Dropped unnecessary comment about ignoring return value.
> 
>  drivers/remoteproc/Kconfig          |  3 +++
>  drivers/remoteproc/qcom_q6v5_adsp.c | 16 +++++++++++++---
>  drivers/remoteproc/qcom_q6v5_mss.c  |  3 +++
>  drivers/remoteproc/qcom_q6v5_pas.c  | 15 ++++++++++++---
>  drivers/remoteproc/qcom_q6v5_wcss.c | 14 +++++++++++---
>  drivers/remoteproc/qcom_wcnss.c     | 14 +++++++++++---
>  6 files changed, 53 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
> index 8088ca4dd6dc..6bd42a411ca8 100644
> --- a/drivers/remoteproc/Kconfig
> +++ b/drivers/remoteproc/Kconfig
> @@ -126,6 +126,7 @@ config QCOM_Q6V5_ADSP
>  	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
>  	depends on QCOM_SYSMON || QCOM_SYSMON=n
>  	select MFD_SYSCON
> +	select QCOM_PIL_INFO
>  	select QCOM_MDT_LOADER
>  	select QCOM_Q6V5_COMMON
>  	select QCOM_RPROC_COMMON
> @@ -158,6 +159,7 @@ config QCOM_Q6V5_PAS
>  	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
>  	depends on QCOM_SYSMON || QCOM_SYSMON=n
>  	select MFD_SYSCON
> +	select QCOM_PIL_INFO
>  	select QCOM_MDT_LOADER
>  	select QCOM_Q6V5_COMMON
>  	select QCOM_RPROC_COMMON
> @@ -209,6 +211,7 @@ config QCOM_WCNSS_PIL
>  	depends on QCOM_SMEM
>  	depends on QCOM_SYSMON || QCOM_SYSMON=n
>  	select QCOM_MDT_LOADER
> +	select QCOM_PIL_INFO
>  	select QCOM_RPROC_COMMON
>  	select QCOM_SCM
>  	help
> diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c
> b/drivers/remoteproc/qcom_q6v5_adsp.c
> index d2a2574dcf35..c539e89664cb 100644
> --- a/drivers/remoteproc/qcom_q6v5_adsp.c
> +++ b/drivers/remoteproc/qcom_q6v5_adsp.c
> @@ -26,6 +26,7 @@
>  #include <linux/soc/qcom/smem_state.h>
> 
>  #include "qcom_common.h"
> +#include "qcom_pil_info.h"
>  #include "qcom_q6v5.h"
>  #include "remoteproc_internal.h"
> 
> @@ -82,6 +83,7 @@ struct qcom_adsp {
>  	unsigned int halt_lpass;
> 
>  	int crash_reason_smem;
> +	const char *info_name;
> 
>  	struct completion start_done;
>  	struct completion stop_done;
> @@ -164,10 +166,17 @@ static int qcom_adsp_shutdown(struct qcom_adsp 
> *adsp)
>  static int adsp_load(struct rproc *rproc, const struct firmware *fw)
>  {
>  	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
> +	int ret;
> +
> +	ret = qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
> +				    adsp->mem_region, adsp->mem_phys,
> +				    adsp->mem_size, &adsp->mem_reloc);
> +	if (ret)
> +		return ret;
> +
> +	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, 
> adsp->mem_size);
> 
> -	return qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
> -			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> -			     &adsp->mem_reloc);
> +	return 0;
>  }
> 
>  static int adsp_start(struct rproc *rproc)
> @@ -436,6 +445,7 @@ static int adsp_probe(struct platform_device *pdev)
>  	adsp = (struct qcom_adsp *)rproc->priv;
>  	adsp->dev = &pdev->dev;
>  	adsp->rproc = rproc;
> +	adsp->info_name = desc->sysmon_name;
>  	platform_set_drvdata(pdev, adsp);
> 
>  	ret = adsp_alloc_memory_region(adsp);
> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c
> b/drivers/remoteproc/qcom_q6v5_mss.c
> index c4936f4d1e80..fdbcae11ae64 100644
> --- a/drivers/remoteproc/qcom_q6v5_mss.c
> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> @@ -29,6 +29,7 @@
> 
>  #include "remoteproc_internal.h"
>  #include "qcom_common.h"
> +#include "qcom_pil_info.h"
>  #include "qcom_q6v5.h"
> 
>  #include <linux/qcom_scm.h>
> @@ -1221,6 +1222,8 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
>  	else if (ret < 0)
>  		dev_err(qproc->dev, "MPSS authentication failed: %d\n", ret);
> 
> +	qcom_pil_info_store("modem", mpss_reloc, qproc->mpss_size);
> +
>  release_firmware:
>  	release_firmware(fw);
>  out:
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c
> b/drivers/remoteproc/qcom_q6v5_pas.c
> index 3bb69f58e086..84cb19231c35 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> @@ -25,6 +25,7 @@
>  #include <linux/soc/qcom/smem_state.h>
> 
>  #include "qcom_common.h"
> +#include "qcom_pil_info.h"
>  #include "qcom_q6v5.h"
>  #include "remoteproc_internal.h"
> 
> @@ -64,6 +65,7 @@ struct qcom_adsp {
>  	int pas_id;
>  	int crash_reason_smem;
>  	bool has_aggre2_clk;
> +	const char *info_name;
> 
>  	struct completion start_done;
>  	struct completion stop_done;
> @@ -117,11 +119,17 @@ static void adsp_pds_disable(struct qcom_adsp
> *adsp, struct device **pds,
>  static int adsp_load(struct rproc *rproc, const struct firmware *fw)
>  {
>  	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
> +	int ret;
> 
> -	return qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
> -			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> -			     &adsp->mem_reloc);
> +	ret = qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
> +			    adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> +			    &adsp->mem_reloc);
> +	if (ret)
> +		return ret;
> 
> +	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, 
> adsp->mem_size);
mem_reloc is used to calculate  offset and then we again add that offset 
to the
ioremapped region base. So we should pass adsp->mem_phys as start here?
> +
> +	return 0;
>  }
> 
>  static int adsp_start(struct rproc *rproc)
> @@ -405,6 +413,7 @@ static int adsp_probe(struct platform_device *pdev)
>  	adsp->rproc = rproc;
>  	adsp->pas_id = desc->pas_id;
>  	adsp->has_aggre2_clk = desc->has_aggre2_clk;
> +	adsp->info_name = desc->sysmon_name;
>  	platform_set_drvdata(pdev, adsp);
> 
>  	ret = adsp_alloc_memory_region(adsp);
> diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c
> b/drivers/remoteproc/qcom_q6v5_wcss.c
> index f1924b740a10..962e37a86b8b 100644
> --- a/drivers/remoteproc/qcom_q6v5_wcss.c
> +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
> @@ -421,10 +421,18 @@ static void *q6v5_wcss_da_to_va(struct rproc
> *rproc, u64 da, size_t len)
>  static int q6v5_wcss_load(struct rproc *rproc, const struct firmware 
> *fw)
>  {
>  	struct q6v5_wcss *wcss = rproc->priv;
> +	int ret;
> +
> +	ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
> +				    0, wcss->mem_region, wcss->mem_phys,
> +				    wcss->mem_size, &wcss->mem_reloc);
> +	if (ret)
> +		return ret;
> +
> +	/* Failures only affect post mortem debugging, so ignore return value 
> */
> +	qcom_pil_info_store("wcnss", wcss->mem_reloc, wcss->mem_size);
> 
> -	return qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
> -				     0, wcss->mem_region, wcss->mem_phys,
> -				     wcss->mem_size, &wcss->mem_reloc);
> +	return ret;
>  }
> 
>  static const struct rproc_ops q6v5_wcss_ops = {
> diff --git a/drivers/remoteproc/qcom_wcnss.c 
> b/drivers/remoteproc/qcom_wcnss.c
> index 5d65e1a9329a..229482b3231f 100644
> --- a/drivers/remoteproc/qcom_wcnss.c
> +++ b/drivers/remoteproc/qcom_wcnss.c
> @@ -27,6 +27,7 @@
> 
>  #include "qcom_common.h"
>  #include "remoteproc_internal.h"
> +#include "qcom_pil_info.h"
>  #include "qcom_wcnss.h"
> 
>  #define WCNSS_CRASH_REASON_SMEM		422
> @@ -145,10 +146,17 @@ void qcom_wcnss_assign_iris(struct qcom_wcnss 
> *wcnss,
>  static int wcnss_load(struct rproc *rproc, const struct firmware *fw)
>  {
>  	struct qcom_wcnss *wcnss = (struct qcom_wcnss *)rproc->priv;
> +	int ret;
> +
> +	ret = qcom_mdt_load(wcnss->dev, fw, rproc->firmware, WCNSS_PAS_ID,
> +			    wcnss->mem_region, wcnss->mem_phys,
> +			    wcnss->mem_size, &wcnss->mem_reloc);
> +	if (ret)
> +		return ret;
> +
> +	qcom_pil_info_store("wcnss", wcnss->mem_reloc, wcnss->mem_size);
> 
> -	return qcom_mdt_load(wcnss->dev, fw, rproc->firmware, WCNSS_PAS_ID,
> -			     wcnss->mem_region, wcnss->mem_phys,
> -			     wcnss->mem_size, &wcnss->mem_reloc);
> +	return 0;
>  }
> 
>  static void wcnss_indicate_nv_download(struct qcom_wcnss *wcnss)

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

* Re: [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load
  2020-05-19 18:14   ` rishabhb
@ 2020-05-19 23:07     ` Bjorn Andersson
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorn Andersson @ 2020-05-19 23:07 UTC (permalink / raw)
  To: rishabhb
  Cc: Andy Gross, Ohad Ben-Cohen, Rob Herring, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel,
	linux-remoteproc-owner

On Tue 19 May 11:14 PDT 2020, rishabhb@codeaurora.org wrote:

> On 2020-05-12 22:56, Bjorn Andersson wrote:
> > Update the PIL relocation information in IMEM with information about
> > where the firmware for various remoteprocs are loaded.
> > 
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > ---
> > 
> > Changes since v4:
> > - Dropped unnecessary comment about ignoring return value.
> > 
> >  drivers/remoteproc/Kconfig          |  3 +++
> >  drivers/remoteproc/qcom_q6v5_adsp.c | 16 +++++++++++++---
> >  drivers/remoteproc/qcom_q6v5_mss.c  |  3 +++
> >  drivers/remoteproc/qcom_q6v5_pas.c  | 15 ++++++++++++---
> >  drivers/remoteproc/qcom_q6v5_wcss.c | 14 +++++++++++---
> >  drivers/remoteproc/qcom_wcnss.c     | 14 +++++++++++---
> >  6 files changed, 53 insertions(+), 12 deletions(-)
> > 
> > diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
> > index 8088ca4dd6dc..6bd42a411ca8 100644
> > --- a/drivers/remoteproc/Kconfig
> > +++ b/drivers/remoteproc/Kconfig
> > @@ -126,6 +126,7 @@ config QCOM_Q6V5_ADSP
> >  	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
> >  	depends on QCOM_SYSMON || QCOM_SYSMON=n
> >  	select MFD_SYSCON
> > +	select QCOM_PIL_INFO
> >  	select QCOM_MDT_LOADER
> >  	select QCOM_Q6V5_COMMON
> >  	select QCOM_RPROC_COMMON
> > @@ -158,6 +159,7 @@ config QCOM_Q6V5_PAS
> >  	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
> >  	depends on QCOM_SYSMON || QCOM_SYSMON=n
> >  	select MFD_SYSCON
> > +	select QCOM_PIL_INFO
> >  	select QCOM_MDT_LOADER
> >  	select QCOM_Q6V5_COMMON
> >  	select QCOM_RPROC_COMMON
> > @@ -209,6 +211,7 @@ config QCOM_WCNSS_PIL
> >  	depends on QCOM_SMEM
> >  	depends on QCOM_SYSMON || QCOM_SYSMON=n
> >  	select QCOM_MDT_LOADER
> > +	select QCOM_PIL_INFO
> >  	select QCOM_RPROC_COMMON
> >  	select QCOM_SCM
> >  	help
> > diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c
> > b/drivers/remoteproc/qcom_q6v5_adsp.c
> > index d2a2574dcf35..c539e89664cb 100644
> > --- a/drivers/remoteproc/qcom_q6v5_adsp.c
> > +++ b/drivers/remoteproc/qcom_q6v5_adsp.c
> > @@ -26,6 +26,7 @@
> >  #include <linux/soc/qcom/smem_state.h>
> > 
> >  #include "qcom_common.h"
> > +#include "qcom_pil_info.h"
> >  #include "qcom_q6v5.h"
> >  #include "remoteproc_internal.h"
> > 
> > @@ -82,6 +83,7 @@ struct qcom_adsp {
> >  	unsigned int halt_lpass;
> > 
> >  	int crash_reason_smem;
> > +	const char *info_name;
> > 
> >  	struct completion start_done;
> >  	struct completion stop_done;
> > @@ -164,10 +166,17 @@ static int qcom_adsp_shutdown(struct qcom_adsp
> > *adsp)
> >  static int adsp_load(struct rproc *rproc, const struct firmware *fw)
> >  {
> >  	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
> > +	int ret;
> > +
> > +	ret = qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
> > +				    adsp->mem_region, adsp->mem_phys,
> > +				    adsp->mem_size, &adsp->mem_reloc);
> > +	if (ret)
> > +		return ret;
> > +
> > +	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, adsp->mem_size);
> > 
> > -	return qcom_mdt_load_no_init(adsp->dev, fw, rproc->firmware, 0,
> > -			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> > -			     &adsp->mem_reloc);
> > +	return 0;
> >  }
> > 
> >  static int adsp_start(struct rproc *rproc)
> > @@ -436,6 +445,7 @@ static int adsp_probe(struct platform_device *pdev)
> >  	adsp = (struct qcom_adsp *)rproc->priv;
> >  	adsp->dev = &pdev->dev;
> >  	adsp->rproc = rproc;
> > +	adsp->info_name = desc->sysmon_name;
> >  	platform_set_drvdata(pdev, adsp);
> > 
> >  	ret = adsp_alloc_memory_region(adsp);
> > diff --git a/drivers/remoteproc/qcom_q6v5_mss.c
> > b/drivers/remoteproc/qcom_q6v5_mss.c
> > index c4936f4d1e80..fdbcae11ae64 100644
> > --- a/drivers/remoteproc/qcom_q6v5_mss.c
> > +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> > @@ -29,6 +29,7 @@
> > 
> >  #include "remoteproc_internal.h"
> >  #include "qcom_common.h"
> > +#include "qcom_pil_info.h"
> >  #include "qcom_q6v5.h"
> > 
> >  #include <linux/qcom_scm.h>
> > @@ -1221,6 +1222,8 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
> >  	else if (ret < 0)
> >  		dev_err(qproc->dev, "MPSS authentication failed: %d\n", ret);
> > 
> > +	qcom_pil_info_store("modem", mpss_reloc, qproc->mpss_size);
> > +
> >  release_firmware:
> >  	release_firmware(fw);
> >  out:
> > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c
> > b/drivers/remoteproc/qcom_q6v5_pas.c
> > index 3bb69f58e086..84cb19231c35 100644
> > --- a/drivers/remoteproc/qcom_q6v5_pas.c
> > +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> > @@ -25,6 +25,7 @@
> >  #include <linux/soc/qcom/smem_state.h>
> > 
> >  #include "qcom_common.h"
> > +#include "qcom_pil_info.h"
> >  #include "qcom_q6v5.h"
> >  #include "remoteproc_internal.h"
> > 
> > @@ -64,6 +65,7 @@ struct qcom_adsp {
> >  	int pas_id;
> >  	int crash_reason_smem;
> >  	bool has_aggre2_clk;
> > +	const char *info_name;
> > 
> >  	struct completion start_done;
> >  	struct completion stop_done;
> > @@ -117,11 +119,17 @@ static void adsp_pds_disable(struct qcom_adsp
> > *adsp, struct device **pds,
> >  static int adsp_load(struct rproc *rproc, const struct firmware *fw)
> >  {
> >  	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
> > +	int ret;
> > 
> > -	return qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
> > -			     adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> > -			     &adsp->mem_reloc);
> > +	ret = qcom_mdt_load(adsp->dev, fw, rproc->firmware, adsp->pas_id,
> > +			    adsp->mem_region, adsp->mem_phys, adsp->mem_size,
> > +			    &adsp->mem_reloc);
> > +	if (ret)
> > +		return ret;
> > 
> > +	qcom_pil_info_store(adsp->info_name, adsp->mem_reloc, adsp->mem_size);
> mem_reloc is used to calculate  offset and then we again add that offset to
> the
> ioremapped region base. So we should pass adsp->mem_phys as start here?

You're correct, I will respin this.

Thanks,
Bjorn

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

* Re: [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding
  2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
@ 2020-05-20 17:59   ` Mathieu Poirier
  2020-05-26 22:32   ` Rob Herring
  1 sibling, 0 replies; 14+ messages in thread
From: Mathieu Poirier @ 2020-05-20 17:59 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Andy Gross, Ohad Ben-Cohen, Rob Herring, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel, Stephen Boyd

On Tue, May 12, 2020 at 10:56:37PM -0700, Bjorn Andersson wrote:
> Add a devicetree binding for the Qualcomm peripheral image loader
> relocation information region found in the IMEM.
> 
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> 
> Changes since v4:
> - Fixed reg in example to make it compile
> 
>  .../bindings/remoteproc/qcom,pil-info.yaml    | 44 +++++++++++++++++++
>  1 file changed, 44 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> 
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
> new file mode 100644
> index 000000000000..87c52316ddbd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
> @@ -0,0 +1,44 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/qcom,pil-info.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm peripheral image loader relocation info binding
> +
> +maintainers:
> +  - Bjorn Andersson <bjorn.andersson@linaro.org>
> +
> +description:
> +  The Qualcomm peripheral image loader relocation memory region, in IMEM, is
> +  used for communicating remoteproc relocation information to post mortem
> +  debugging tools.
> +
> +properties:
> +  compatible:
> +    const: qcom,pil-reloc-info
> +
> +  reg:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    imem@146bf000 {
> +      compatible = "syscon", "simple-mfd";
> +      reg = <0x146bf000 0x1000>;
> +
> +      #address-cells = <1>;
> +      #size-cells = <1>;
> +
> +      ranges = <0 0x146bf000 0x1000>;
> +
> +      pil-reloc@94c {
> +        compatible = "qcom,pil-reloc-info";
> +        reg = <0x94c 0xc8>;
> +      };
> +    };
> +...
> -- 
> 2.26.2
> 

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

* Re: [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM
  2020-05-13  5:56 ` [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM Bjorn Andersson
@ 2020-05-20 18:00   ` Mathieu Poirier
  0 siblings, 0 replies; 14+ messages in thread
From: Mathieu Poirier @ 2020-05-20 18:00 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Andy Gross, Ohad Ben-Cohen, Rob Herring, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On Tue, May 12, 2020 at 10:56:38PM -0700, Bjorn Andersson wrote:
> A region in IMEM is used to communicate load addresses of remoteproc to
> post mortem debug tools. Implement a helper function that can be used to
> store this information in order to enable these tools to process
> collected ramdumps.
> 
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> 
> Changes since v4:
> - Replaced platform_driver by just a single helper function
> - Lazy initialization of mapping
> - Cleaned up search loop
> - Replaced regmap access of IMEM with ioremap and normal accessors
> 
>  drivers/remoteproc/Kconfig         |   3 +
>  drivers/remoteproc/Makefile        |   1 +
>  drivers/remoteproc/qcom_pil_info.c | 124 +++++++++++++++++++++++++++++
>  drivers/remoteproc/qcom_pil_info.h |   7 ++
>  4 files changed, 135 insertions(+)
>  create mode 100644 drivers/remoteproc/qcom_pil_info.c
>  create mode 100644 drivers/remoteproc/qcom_pil_info.h
> 
> diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
> index fbaed079b299..8088ca4dd6dc 100644
> --- a/drivers/remoteproc/Kconfig
> +++ b/drivers/remoteproc/Kconfig
> @@ -107,6 +107,9 @@ config KEYSTONE_REMOTEPROC
>  	  It's safe to say N here if you're not interested in the Keystone
>  	  DSPs or just want to use a bare minimum kernel.
>  
> +config QCOM_PIL_INFO
> +	tristate
> +
>  config QCOM_RPROC_COMMON
>  	tristate
>  
> diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
> index 0effd3825035..cc0f631adb3b 100644
> --- a/drivers/remoteproc/Makefile
> +++ b/drivers/remoteproc/Makefile
> @@ -15,6 +15,7 @@ obj-$(CONFIG_OMAP_REMOTEPROC)		+= omap_remoteproc.o
>  obj-$(CONFIG_WKUP_M3_RPROC)		+= wkup_m3_rproc.o
>  obj-$(CONFIG_DA8XX_REMOTEPROC)		+= da8xx_remoteproc.o
>  obj-$(CONFIG_KEYSTONE_REMOTEPROC)	+= keystone_remoteproc.o
> +obj-$(CONFIG_QCOM_PIL_INFO)		+= qcom_pil_info.o
>  obj-$(CONFIG_QCOM_RPROC_COMMON)		+= qcom_common.o
>  obj-$(CONFIG_QCOM_Q6V5_COMMON)		+= qcom_q6v5.o
>  obj-$(CONFIG_QCOM_Q6V5_ADSP)		+= qcom_q6v5_adsp.o
> diff --git a/drivers/remoteproc/qcom_pil_info.c b/drivers/remoteproc/qcom_pil_info.c
> new file mode 100644
> index 000000000000..0785c7cde2d3
> --- /dev/null
> +++ b/drivers/remoteproc/qcom_pil_info.c
> @@ -0,0 +1,124 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2019-2020 Linaro Ltd.
> + */
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/mutex.h>
> +#include <linux/of_address.h>
> +
> +#define PIL_RELOC_NAME_LEN	8
> +
> +struct pil_reloc_entry {
> +	char name[PIL_RELOC_NAME_LEN];
> +	__le64 base;
> +	__le32 size;
> +} __packed;
> +
> +struct pil_reloc {
> +	struct device *dev;
> +	void __iomem *base;
> +	size_t num_entries;
> +};
> +
> +static struct pil_reloc _reloc __read_mostly;
> +static DEFINE_MUTEX(reloc_mutex);
> +
> +static int qcom_pil_info_init(void)
> +{
> +	struct device_node *np;
> +	struct resource imem;
> +	void __iomem *base;
> +	int ret;
> +
> +	/* Already initialized? */
> +	if (_reloc.base)
> +		return 0;
> +
> +	np = of_find_compatible_node(NULL, NULL, "qcom,pil-reloc-info");
> +	if (!np)
> +		return -ENOENT;
> +
> +	ret = of_address_to_resource(np, 0, &imem);
> +	of_node_put(np);
> +	if (ret < 0)
> +		return ret;
> +
> +	base = ioremap(imem.start, resource_size(&imem));
> +	if (!base) {
> +		pr_err("failed to map PIL relocation info region\n");
> +		return -ENOMEM;
> +	}
> +
> +	memset_io(base, 0, resource_size(&imem));
> +
> +	_reloc.base = base;
> +	_reloc.num_entries = resource_size(&imem) / sizeof(struct pil_reloc_entry);
> +
> +	return 0;
> +}
> +
> +/**
> + * qcom_pil_info_store() - store PIL information of image in IMEM
> + * @image:	name of the image
> + * @base:	base address of the loaded image
> + * @size:	size of the loaded image
> + *
> + * Return: 0 on success, negative errno on failure
> + */
> +int qcom_pil_info_store(const char *image, phys_addr_t base, size_t size)
> +{
> +	char buf[PIL_RELOC_NAME_LEN];
> +	void __iomem *entry;
> +	int ret;
> +	int i;
> +
> +	mutex_lock(&reloc_mutex);
> +	ret = qcom_pil_info_init();
> +	if (ret < 0) {
> +		mutex_unlock(&reloc_mutex);
> +		return ret;
> +	}
> +
> +	for (i = 0; i < _reloc.num_entries; i++) {
> +		entry = _reloc.base + i * sizeof(struct pil_reloc_entry);
> +
> +		memcpy_fromio(buf, entry, PIL_RELOC_NAME_LEN);
> +
> +		/*
> +		 * An empty record means we didn't find it, given that the
> +		 * records are packed.
> +		 */
> +		if (!buf[0])
> +			goto found_unused;
> +
> +		if (!strncmp(buf, image, PIL_RELOC_NAME_LEN))
> +			goto found_existing;
> +	}
> +
> +	pr_warn("insufficient PIL info slots\n");
> +	mutex_unlock(&reloc_mutex);
> +	return -ENOMEM;
> +
> +found_unused:
> +	memcpy_toio(entry, image, PIL_RELOC_NAME_LEN);
> +found_existing:
> +	writel(base, entry + offsetof(struct pil_reloc_entry, base));
> +	writel(size, entry + offsetof(struct pil_reloc_entry, size));
> +	mutex_unlock(&reloc_mutex);
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_GPL(qcom_pil_info_store);
> +
> +static void __exit pil_reloc_exit(void)
> +{
> +	mutex_lock(&reloc_mutex);
> +	iounmap(_reloc.base);
> +	_reloc.base = NULL;
> +	mutex_unlock(&reloc_mutex);
> +}
> +module_exit(pil_reloc_exit);
> +
> +MODULE_DESCRIPTION("Qualcomm PIL relocation info");
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/remoteproc/qcom_pil_info.h b/drivers/remoteproc/qcom_pil_info.h
> new file mode 100644
> index 000000000000..1b89a63ba82f
> --- /dev/null
> +++ b/drivers/remoteproc/qcom_pil_info.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef __QCOM_PIL_INFO_H__
> +#define __QCOM_PIL_INFO_H__
> +
> +int qcom_pil_info_store(const char *image, phys_addr_t base, size_t size);
> +
> +#endif

Very clean an easy to understand.

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> -- 
> 2.26.2
> 

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

* Re: [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding
  2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
  2020-05-20 17:59   ` Mathieu Poirier
@ 2020-05-26 22:32   ` Rob Herring
  1 sibling, 0 replies; 14+ messages in thread
From: Rob Herring @ 2020-05-26 22:32 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: linux-kernel, linux-arm-msm, devicetree, Ohad Ben-Cohen,
	linux-remoteproc, Stephen Boyd, Andy Gross, Rob Herring

On Tue, 12 May 2020 22:56:37 -0700, Bjorn Andersson wrote:
> Add a devicetree binding for the Qualcomm peripheral image loader
> relocation information region found in the IMEM.
> 
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
> 
> Changes since v4:
> - Fixed reg in example to make it compile
> 
>  .../bindings/remoteproc/qcom,pil-info.yaml    | 44 +++++++++++++++++++
>  1 file changed, 44 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

end of thread, other threads:[~2020-05-26 22:32 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-13  5:56 [PATCH v5 0/5] remoteproc: qcom: PIL info support Bjorn Andersson
2020-05-13  5:56 ` [PATCH v5 1/5] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
2020-05-20 17:59   ` Mathieu Poirier
2020-05-26 22:32   ` Rob Herring
2020-05-13  5:56 ` [PATCH v5 2/5] remoteproc: qcom: Introduce helper to store pil info in IMEM Bjorn Andersson
2020-05-20 18:00   ` Mathieu Poirier
2020-05-13  5:56 ` [PATCH v5 3/5] remoteproc: qcom: Update PIL relocation info on load Bjorn Andersson
2020-05-14 18:48   ` kbuild test robot
2020-05-14 18:48     ` kbuild test robot
2020-05-19 18:14   ` rishabhb
2020-05-19 23:07     ` Bjorn Andersson
2020-05-13  5:56 ` [PATCH v5 4/5] arm64: dts: qcom: qcs404: Add IMEM and PIL info region Bjorn Andersson
2020-05-13  5:56 ` [PATCH v5 5/5] arm64: dts: qcom: sdm845: " Bjorn Andersson
2020-05-14 16:53 ` [PATCH v5 0/5] remoteproc: qcom: PIL info support Vinod Koul

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.