2022-06-01 19:18:27

by Yogesh Lal

[permalink] [raw]
Subject: [V3 0/2] Fallback to full coredump

Add support for full coredump as a fallback mechanism in
absence of minidump support.

V3:
* Add clear out dump segment before re-populating it.

Siddharth Gupta (2):
remoteproc: core: Export the rproc coredump APIs
remoteproc: qcom: Add full coredump fallback mechanism

drivers/remoteproc/qcom_common.c | 14 ++++++++++++--
drivers/remoteproc/qcom_q6v5_pas.c | 1 +
drivers/remoteproc/remoteproc_coredump.c | 2 ++
drivers/remoteproc/remoteproc_internal.h | 4 ----
include/linux/remoteproc.h | 4 ++++
5 files changed, 19 insertions(+), 6 deletions(-)

--
2.7.4



2022-06-01 20:39:13

by Yogesh Lal

[permalink] [raw]
Subject: [V3 1/2] remoteproc: core: Export the rproc coredump APIs

From: Siddharth Gupta <[email protected]>

The remoteproc coredump APIs are currently only part of the internal
remoteproc header. This prevents the remoteproc platform drivers from
using these APIs when needed. This change moves the rproc_coredump()
and rproc_coredump_cleanup() APIs to the linux header and marks them
as exported symbols.

Signed-off-by: Siddharth Gupta <[email protected]>
Signed-off-by: Yogesh Lal <[email protected]>
---
drivers/remoteproc/remoteproc_coredump.c | 2 ++
drivers/remoteproc/remoteproc_internal.h | 4 ----
include/linux/remoteproc.h | 4 ++++
3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c
index aee657c..aa45b68 100644
--- a/drivers/remoteproc/remoteproc_coredump.c
+++ b/drivers/remoteproc/remoteproc_coredump.c
@@ -32,6 +32,7 @@ void rproc_coredump_cleanup(struct rproc *rproc)
kfree(entry);
}
}
+EXPORT_SYMBOL(rproc_coredump_cleanup);

/**
* rproc_coredump_add_segment() - add segment of device memory to coredump
@@ -327,6 +328,7 @@ void rproc_coredump(struct rproc *rproc)
*/
wait_for_completion(&dump_state.dump_done);
}
+EXPORT_SYMBOL(rproc_coredump);

/**
* rproc_coredump_using_sections() - perform coredump using section headers
diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h
index a328e63..a492a41 100644
--- a/drivers/remoteproc/remoteproc_internal.h
+++ b/drivers/remoteproc/remoteproc_internal.h
@@ -49,10 +49,6 @@ extern struct class rproc_class;
int rproc_init_sysfs(void);
void rproc_exit_sysfs(void);

-/* from remoteproc_coredump.c */
-void rproc_coredump_cleanup(struct rproc *rproc);
-void rproc_coredump(struct rproc *rproc);
-
#ifdef CONFIG_REMOTEPROC_CDEV
void rproc_init_cdev(void);
void rproc_exit_cdev(void);
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index 83c09ac..b8c8c3a 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -673,6 +673,10 @@ void rproc_shutdown(struct rproc *rproc);
int rproc_detach(struct rproc *rproc);
int rproc_set_firmware(struct rproc *rproc, const char *fw_name);
void rproc_report_crash(struct rproc *rproc, enum rproc_crash_type type);
+
+/* from remoteproc_coredump.c */
+void rproc_coredump_cleanup(struct rproc *rproc);
+void rproc_coredump(struct rproc *rproc);
void rproc_coredump_using_sections(struct rproc *rproc);
int rproc_coredump_add_segment(struct rproc *rproc, dma_addr_t da, size_t size);
int rproc_coredump_add_custom_segment(struct rproc *rproc,
--
2.7.4