linux-remoteproc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaud POULIQUEN <arnaud.pouliquen@st.com>
To: Mathieu Poirier <mathieu.poirier@linaro.org>,
	"ohad@wizery.com" <ohad@wizery.com>,
	"bjorn.andersson@linaro.org" <bjorn.andersson@linaro.org>
Cc: "linux-remoteproc@vger.kernel.org" <linux-remoteproc@vger.kernel.org>
Subject: Re: [PATCH v2 11/14] remoteproc: Properly deal with a stop request when attached
Date: Thu, 12 Nov 2020 18:36:59 +0100	[thread overview]
Message-ID: <0252b2b6-2c4d-6659-4b67-b5b0ae97bc65@st.com> (raw)
In-Reply-To: <20201030195713.1366341-12-mathieu.poirier@linaro.org>

Hi Mathieu,


On 10/30/20 8:57 PM, Mathieu Poirier wrote:
> This patch introduces the capability to stop a remote processor
> that has been attached to by the remoteproc core.  For that to
> happen a rproc::ops::stop() operation need to be available.
> 
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/remoteproc_cdev.c  | 5 +++--
>  drivers/remoteproc/remoteproc_core.c  | 6 +++++-
>  drivers/remoteproc/remoteproc_sysfs.c | 5 +++--
>  3 files changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/remoteproc/remoteproc_cdev.c b/drivers/remoteproc/remoteproc_cdev.c
> index b19ea3057bde..d06f8d4919c7 100644
> --- a/drivers/remoteproc/remoteproc_cdev.c
> +++ b/drivers/remoteproc/remoteproc_cdev.c
> @@ -37,10 +37,11 @@ static ssize_t rproc_cdev_write(struct file *filp, const char __user *buf, size_
>  
>  		ret = rproc_boot(rproc);
>  	} else if (!strncmp(cmd, "stop", len)) {
> -		if (rproc->state != RPROC_RUNNING)
> +		if (rproc->state != RPROC_RUNNING &&
> +		    rproc->state != RPROC_ATTACHED)
>  			return -EINVAL;
>  
> -		rproc_shutdown(rproc);
> +		ret = rproc_shutdown(rproc);
>  	} else {
>  		dev_err(&rproc->dev, "Unrecognized option\n");
>  		ret = -EINVAL;
> diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
> index f58475f6dcab..229fa2cad0bd 100644
> --- a/drivers/remoteproc/remoteproc_core.c
> +++ b/drivers/remoteproc/remoteproc_core.c
> @@ -1642,6 +1642,10 @@ static int rproc_stop(struct rproc *rproc, bool crashed)
>  	struct device *dev = &rproc->dev;
>  	int ret;
>  
> +	/* No need to continue if a stop() operation has not been provided */
> +	if (!rproc->ops->stop)
> +		return -EINVAL;
> +
>  	/* Stop any subdevices for the remote processor */
>  	rproc_stop_subdevices(rproc, crashed);
>  
> @@ -1880,7 +1884,7 @@ int rproc_shutdown(struct rproc *rproc)
>  		return ret;
>  	}
>  
> -	if (rproc->state != RPROC_RUNNING) {
> +	if (rproc->state != RPROC_RUNNING && rproc->state != RPROC_ATTACHED) {
>  		ret = -EPERM;
>  		goto out;
>  	}
> diff --git a/drivers/remoteproc/remoteproc_sysfs.c b/drivers/remoteproc/remoteproc_sysfs.c
> index 99ff51fd9707..96751c087585 100644
> --- a/drivers/remoteproc/remoteproc_sysfs.c
> +++ b/drivers/remoteproc/remoteproc_sysfs.c

I've started some tests, it's working pretty well!
I found an issue when trying to start the remote proc while already attached:

@@ -106,7 +106,8 @@ static ssize_t state_store(struct device *dev,
 	int ret = 0;

 	if (sysfs_streq(buf, "start")) {
-		if (rproc->state == RPROC_RUNNING)
+		if (rproc->state == RPROC_RUNNING ||
+		    rproc->state == RPROC_ATTACHED)
 			return -EBUSY;

 		ret = rproc_boot(rproc);

To fix it also in cdev...

Regards,
Arnaud

> @@ -230,10 +230,11 @@ static ssize_t state_store(struct device *dev,
>  		if (ret)
>  			dev_err(&rproc->dev, "Boot failed: %d\n", ret);
>  	} else if (sysfs_streq(buf, "stop")) {
> -		if (rproc->state != RPROC_RUNNING)
> +		if (rproc->state != RPROC_RUNNING &&
> +		    rproc->state != RPROC_ATTACHED)
>  			return -EINVAL;
>  
> -		rproc_shutdown(rproc);
> +		ret = rproc_shutdown(rproc);
>  	} else {
>  		dev_err(&rproc->dev, "Unrecognised option: %s\n", buf);
>  		ret = -EINVAL;
> 

  parent reply	other threads:[~2020-11-12 17:37 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-30 19:56 [PATCH v2 00/14] remoteproc: Add support for detaching from rproc Mathieu Poirier
2020-10-30 19:57 ` [PATCH v2 01/14] remoteproc: Re-check state in rproc_shutdown() Mathieu Poirier
2020-11-09  9:40   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 02/14] remoteproc: Remove useless check in rproc_del() Mathieu Poirier
2020-11-09  9:40   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 03/14] remoteproc: Add new RPROC_ATTACHED state Mathieu Poirier
2020-11-09  9:41   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 04/14] remoteproc: Properly represent the attached state Mathieu Poirier
2020-11-09  9:41   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 05/14] remoteproc: Properly deal with a kernel panic when attached Mathieu Poirier
2020-11-09  9:41   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 06/14] remoteproc: Add new detach() remoteproc operation Mathieu Poirier
2020-11-06 17:31   ` Arnaud POULIQUEN
2020-11-19 23:06     ` Mathieu Poirier
2020-10-30 19:57 ` [PATCH v2 07/14] remoteproc: Introduce function __rproc_detach() Mathieu Poirier
2020-11-06 17:43   ` Arnaud POULIQUEN
2020-11-19 23:27     ` Mathieu Poirier
2020-10-30 19:57 ` [PATCH v2 08/14] remoteproc: Introduce function rproc_detach() Mathieu Poirier
2020-11-09  9:05   ` Arnaud POULIQUEN
2020-11-19 23:40     ` Mathieu Poirier
2020-10-30 19:57 ` [PATCH v2 09/14] remoteproc: Rename function rproc_actuate() Mathieu Poirier
2020-11-09  9:41   ` Arnaud POULIQUEN
2020-10-30 19:57 ` [PATCH v2 10/14] remoteproc: Add return value to function rproc_shutdown() Mathieu Poirier
2020-11-09  9:14   ` Arnaud POULIQUEN
2020-11-19 23:46     ` Mathieu Poirier
2020-10-30 19:57 ` [PATCH v2 11/14] remoteproc: Properly deal with a stop request when attached Mathieu Poirier
2020-11-09  9:42   ` Arnaud POULIQUEN
2020-11-12 17:36   ` Arnaud POULIQUEN [this message]
2020-10-30 19:57 ` [PATCH v2 12/14] remoteproc: Properly deal with detach request Mathieu Poirier
2020-10-30 19:57 ` [RFC v2 13/14] remoteproc: Add automation flags Mathieu Poirier
2020-11-06 14:38   ` Arnaud POULIQUEN
2020-11-06 17:20     ` Mathieu Poirier
2020-11-12 13:56   ` Arnaud POULIQUEN
2020-11-13 21:27     ` Mathieu Poirier
2020-11-16 10:21       ` Arnaud POULIQUEN
2020-11-20 20:40         ` Mathieu Poirier
2020-10-30 19:57 ` [RFC v2 14/14] remoteproc: Refactor rproc delete and cdev release path Mathieu Poirier
2020-11-12 18:20 ` [PATCH v2 00/14] remoteproc: Add support for detaching from rproc Arnaud POULIQUEN
2020-11-12 18:41   ` 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=0252b2b6-2c4d-6659-4b67-b5b0ae97bc65@st.com \
    --to=arnaud.pouliquen@st.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=mathieu.poirier@linaro.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
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).