From: Mathieu Poirier <mathieu.poirier@linaro.org> To: bjorn.andersson@linaro.org, ohad@wizery.com Cc: linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/13] remoteproc: Add return value to function rproc_shutdown() Date: Wed, 26 Aug 2020 10:45:25 -0600 Message-ID: <20200826164529.224476-10-mathieu.poirier@linaro.org> (raw) In-Reply-To: <20200826164529.224476-1-mathieu.poirier@linaro.org> Add a return value to function rproc_shutdown() in order to properly deal with error conditions that may occur. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> --- drivers/remoteproc/remoteproc_core.c | 13 +++++++++---- include/linux/remoteproc.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index c4b80ce6f22d..c6c6aba66098 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -1846,7 +1846,7 @@ EXPORT_SYMBOL(rproc_boot); * returns, and users can still use it with a subsequent rproc_boot(), if * needed. */ -void rproc_shutdown(struct rproc *rproc) +int rproc_shutdown(struct rproc *rproc) { struct device *dev = &rproc->dev; int ret; @@ -1854,15 +1854,19 @@ void rproc_shutdown(struct rproc *rproc) ret = mutex_lock_interruptible(&rproc->lock); if (ret) { dev_err(dev, "can't lock rproc %s: %d\n", rproc->name, ret); - return; + return ret; } - if (rproc->state != RPROC_RUNNING) + if (rproc->state != RPROC_RUNNING) { + ret = -EPERM; goto out; + } /* if the remote proc is still needed, bail out */ - if (!atomic_dec_and_test(&rproc->power)) + if (!atomic_dec_and_test(&rproc->power)) { + ret = -EBUSY; goto out; + } ret = rproc_stop(rproc, false); if (ret) { @@ -1884,6 +1888,7 @@ void rproc_shutdown(struct rproc *rproc) rproc->table_ptr = NULL; out: mutex_unlock(&rproc->lock); + return ret; } EXPORT_SYMBOL(rproc_shutdown); diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h index 6250491ee851..40eccfbc1357 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -655,7 +655,7 @@ rproc_of_resm_mem_entry_init(struct device *dev, u32 of_resm_idx, size_t len, u32 da, const char *name, ...); int rproc_boot(struct rproc *rproc); -void rproc_shutdown(struct rproc *rproc); +int rproc_shutdown(struct rproc *rproc); int rproc_detach(struct rproc *rproc); void rproc_report_crash(struct rproc *rproc, enum rproc_crash_type type); int rproc_coredump_add_segment(struct rproc *rproc, dma_addr_t da, size_t size); -- 2.25.1
next prev parent reply index Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-26 16:45 [PATCH 00/13] remoteproc: Add support for detaching from rproc Mathieu Poirier 2020-08-26 16:45 ` [PATCH 01/13] remoteproc: Re-check state in rproc_shutdown() Mathieu Poirier 2020-10-15 1:28 ` Peng Fan 2020-08-26 16:45 ` [PATCH 02/13] remoteproc: Remove useless check in rproc_del() Mathieu Poirier 2020-10-15 1:29 ` Peng Fan 2020-08-26 16:45 ` [PATCH 03/13] remoteproc: Add new RPROC_ATTACHED state Mathieu Poirier 2020-10-15 1:31 ` Peng Fan 2020-08-26 16:45 ` [PATCH 04/13] remoteproc: Properly represent the attached state Mathieu Poirier 2020-10-15 1:33 ` Peng Fan 2020-08-26 16:45 ` [PATCH 05/13] remoteproc: Add new detach() remoteproc operation Mathieu Poirier 2020-10-15 1:37 ` Peng Fan 2020-10-22 21:51 ` Mathieu Poirier 2020-08-26 16:45 ` [PATCH 06/13] remoteproc: Introduce function __rproc_detach() Mathieu Poirier 2020-10-15 1:39 ` Peng Fan 2020-08-26 16:45 ` [PATCH 07/13] remoteproc: Introduce function rproc_detach() Mathieu Poirier 2020-10-15 1:52 ` Peng Fan 2020-10-22 21:55 ` Mathieu Poirier 2020-08-26 16:45 ` [PATCH 08/13] remoteproc: Rename function rproc_actuate() Mathieu Poirier 2020-10-15 2:15 ` Peng Fan 2020-08-26 16:45 ` Mathieu Poirier [this message] 2020-10-15 2:21 ` [PATCH 09/13] remoteproc: Add return value to function rproc_shutdown() Peng Fan 2020-08-26 16:45 ` [PATCH 10/13] remoteproc: Properly deal with a stop request when attached Mathieu Poirier 2020-10-15 2:29 ` Peng Fan 2020-08-26 16:45 ` [PATCH 11/13] remoteproc: Properly deal with detach request Mathieu Poirier 2020-10-15 2:30 ` Peng Fan 2020-08-26 16:45 ` [PATCH 12/13] remoteproc: Refactor rproc delete and cdev release path Mathieu Poirier 2020-10-15 2:31 ` Peng Fan 2020-08-26 16:45 ` [PATCH 13/13] remoteproc: Properly deal with a kernel panic when attached Mathieu Poirier 2020-10-15 2:28 ` Peng Fan 2020-09-01 16:55 ` [PATCH 00/13] remoteproc: Add support for detaching from rproc Arnaud POULIQUEN 2020-09-01 18:02 ` Mathieu Poirier
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=20200826164529.224476-10-mathieu.poirier@linaro.org \ --to=mathieu.poirier@linaro.org \ --cc=bjorn.andersson@linaro.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-remoteproc@vger.kernel.org \ --cc=ohad@wizery.com \ /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
Linux-remoteproc Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-remoteproc/0 linux-remoteproc/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-remoteproc linux-remoteproc/ https://lore.kernel.org/linux-remoteproc \ linux-remoteproc@vger.kernel.org public-inbox-index linux-remoteproc Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-remoteproc AGPL code for this site: git clone https://public-inbox.org/public-inbox.git