linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Ohad Ben-Cohen <ohad@wizery.com>
Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	Sibi Sankar <sibis@codeaurora.org>,
	Rishabh Bhatnagar <rishabhb@codeaurora.org>
Subject: [PATCH v2 6/8] remoteproc: Introduce "panic" callback in ops
Date: Thu, 26 Dec 2019 21:32:13 -0800	[thread overview]
Message-ID: <20191227053215.423811-7-bjorn.andersson@linaro.org> (raw)
In-Reply-To: <20191227053215.423811-1-bjorn.andersson@linaro.org>

Introduce a "panic" function in the remoteproc ops table, to allow
remoteproc instances to perform operations needed in order to aid in
post mortem system debugging, such as flushing caches etc, when the
kernel panics.

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

Changes since v1:
- None

 drivers/remoteproc/remoteproc_core.c | 17 +++++++++++++++++
 include/linux/remoteproc.h           |  4 ++++
 2 files changed, 21 insertions(+)

diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index 307df98347ba..779f19d6d8e7 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -1832,6 +1832,17 @@ void rproc_shutdown(struct rproc *rproc)
 }
 EXPORT_SYMBOL(rproc_shutdown);
 
+static int rproc_panic_handler(struct notifier_block *nb, unsigned long event,
+			       void *ptr)
+{
+	struct rproc *rproc = container_of(nb, struct rproc, panic_nb);
+
+	if (rproc->state == RPROC_RUNNING)
+		rproc->ops->panic(rproc);
+
+	return NOTIFY_DONE;
+}
+
 /**
  * rproc_get_by_phandle() - find a remote processor by phandle
  * @phandle: phandle to the rproc
@@ -2057,6 +2068,12 @@ struct rproc *rproc_alloc(struct device *dev, const char *name,
 		rproc->ops->get_boot_addr = rproc_elf_get_boot_addr;
 	}
 
+	/* Register panic notifier for remoteprocs with "panic" callback */
+	if (rproc->ops->panic) {
+		rproc->panic_nb.notifier_call = rproc_panic_handler;
+		atomic_notifier_chain_register(&panic_notifier_list, &rproc->panic_nb);
+	}
+
 	mutex_init(&rproc->lock);
 
 	idr_init(&rproc->notifyids);
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index 16ad66683ad0..7836c528d309 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -369,6 +369,7 @@ enum rsc_handling_status {
  *			expects to find it
  * @sanity_check:	sanity check the fw image
  * @get_boot_addr:	get boot address to entry point specified in firmware
+ * @panic:	optional callback to react to system panic
  */
 struct rproc_ops {
 	int (*start)(struct rproc *rproc);
@@ -383,6 +384,7 @@ struct rproc_ops {
 	int (*load)(struct rproc *rproc, const struct firmware *fw);
 	int (*sanity_check)(struct rproc *rproc, const struct firmware *fw);
 	u32 (*get_boot_addr)(struct rproc *rproc, const struct firmware *fw);
+	void (*panic)(struct rproc *rproc);
 };
 
 /**
@@ -481,6 +483,7 @@ struct rproc_dump_segment {
  * @auto_boot: flag to indicate if remote processor should be auto-started
  * @dump_segments: list of segments in the firmware
  * @nb_vdev: number of vdev currently handled by rproc
+ * @panic_nb: notifier_block for remoteproc's panic handler
  */
 struct rproc {
 	struct list_head node;
@@ -514,6 +517,7 @@ struct rproc {
 	bool auto_boot;
 	struct list_head dump_segments;
 	int nb_vdev;
+	struct notifier_block panic_nb;
 };
 
 /**
-- 
2.24.0


  parent reply	other threads:[~2019-12-27  5:33 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-27  5:32 [PATCH v2 0/8] remoteproc: qcom: post mortem debug support Bjorn Andersson
2019-12-27  5:32 ` [PATCH v2 1/8] dt-bindings: remoteproc: Add Qualcomm PIL info binding Bjorn Andersson
2020-01-04 21:38   ` Rob Herring
2020-01-04 22:17     ` Bjorn Andersson
2020-01-23 22:07       ` Rob Herring
2019-12-27  5:32 ` [PATCH v2 2/8] remoteproc: qcom: Introduce driver to store pil info in IMEM Bjorn Andersson
2020-01-10 21:18   ` Mathieu Poirier
2020-01-22  2:02     ` Bjorn Andersson
2020-01-22 19:04       ` Mathieu Poirier
2020-01-22 19:19         ` Bjorn Andersson
2020-01-22 22:56   ` rishabhb
2020-01-22 23:08     ` Bjorn Andersson
2020-01-22 23:58       ` rishabhb
2020-01-23  5:38         ` Bjorn Andersson
2019-12-27  5:32 ` [PATCH v2 3/8] remoteproc: qcom: Update IMEM PIL info on load Bjorn Andersson
2020-01-10 21:19   ` Mathieu Poirier
2019-12-27  5:32 ` [PATCH v2 4/8] arm64: dts: qcom: qcs404: Add IMEM and PIL info region Bjorn Andersson
2019-12-27  5:32 ` [PATCH v2 5/8] arm64: dts: qcom: sdm845: " Bjorn Andersson
2019-12-27  5:32 ` Bjorn Andersson [this message]
2020-01-10 21:23   ` [PATCH v2 6/8] remoteproc: Introduce "panic" callback in ops Mathieu Poirier
2020-01-30 10:07     ` Arnaud POULIQUEN
2019-12-27  5:32 ` [PATCH v2 7/8] remoteproc: qcom: q6v5: Add common panic handler Bjorn Andersson
2020-01-10 21:28   ` Mathieu Poirier
2020-01-22 19:39     ` Bjorn Andersson
2020-01-23 17:01       ` Mathieu Poirier
2020-01-23 17:15         ` Bjorn Andersson
2020-01-23 17:49           ` Arnaud POULIQUEN
2020-01-24 18:44             ` Mathieu Poirier
2020-01-27  9:46               ` Arnaud POULIQUEN
2020-01-29 20:15                 ` Mathieu Poirier
2020-01-30 10:00                   ` Arnaud POULIQUEN
2019-12-27  5:32 ` [PATCH v2 8/8] remoteproc: qcom: Introduce panic handler for PAS and ADSP Bjorn Andersson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191227053215.423811-7-bjorn.andersson@linaro.org \
    --to=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=ohad@wizery.com \
    --cc=rishabhb@codeaurora.org \
    --cc=robh+dt@kernel.org \
    --cc=sibis@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).