All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Marek Vasut <marex@denx.de>
Cc: linux-remoteproc@vger.kernel.org, Peng Fan <peng.fan@nxp.com>,
	Jacky Bai <ping.bai@nxp.com>, Ye Li <ye.li@nxp.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Fabio Estevam <festevam@gmail.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Rob Herring <robh+dt@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/2] remoteproc: imx_rproc: add start up delay
Date: Mon, 10 Jul 2023 09:53:59 -0600	[thread overview]
Message-ID: <ZKwpl1ZGJcX2RmJb@p14s> (raw)
In-Reply-To: <20230707232444.374431-2-marex@denx.de>

On Sat, Jul 08, 2023 at 01:24:44AM +0200, Marek Vasut wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> There is case that after remoteproc start remote processor[M4], the M4
> runs slow and before M4 finish its own rpmsg framework initialization,
> linux sends out vring kick message, then M4 firmware drops the kick
> message. Some NXP released Cortex-M[x] images has such limitation that
> it requires linux sends out vring kick message after M4 firmware finish
> its rpmsg framework initialization.
> 
> Reviewed-by: Jacky Bai <ping.bai@nxp.com>
> Reviewed-by: Ye Li <ye.li@nxp.com>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> Note: picked from NXP downstream LF-6630-2 remoteproc: imx_rproc: add start up delay
> https://github.com/nxp-imx/linux-imx.git 0b1b91c95b291a3b60d6224b13f6a95a75896abf
> ---
> Note: Literally all of the NXP BSP 2.13.0 firmware builds fail to boot
>       without this being set to something like 50..500 ms , so this is
>       rather useful to have.

My stance on this hasn't changed - hacks such as these do not scale and are a
nightmare to maintain.  The problem should be fixed in the M4's firmware.

> ---
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Cc: NXP Linux Team <linux-imx@nxp.com>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-remoteproc@vger.kernel.org
> ---
>  drivers/remoteproc/imx_rproc.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index f9874fc5a80ff..d0eb96d6a4fe1 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -6,6 +6,7 @@
>  #include <dt-bindings/firmware/imx/rsrc.h>
>  #include <linux/arm-smccc.h>
>  #include <linux/clk.h>
> +#include <linux/delay.h>
>  #include <linux/err.h>
>  #include <linux/firmware/imx/sci.h>
>  #include <linux/interrupt.h>
> @@ -110,6 +111,7 @@ struct imx_rproc {
>  	u32				core_index;
>  	struct device                   **pd_dev;
>  	struct device_link              **pd_dev_link;
> +	u32				startup_delay;
>  };
>  
>  static const struct imx_rproc_att imx_rproc_att_imx93[] = {
> @@ -382,6 +384,9 @@ static int imx_rproc_start(struct rproc *rproc)
>  	if (ret)
>  		dev_err(dev, "Failed to enable remote core!\n");
>  
> +	if (priv->startup_delay)
> +		msleep(priv->startup_delay);
> +
>  	return ret;
>  }
>  
> @@ -1090,6 +1095,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  	if (rproc->state != RPROC_DETACHED)
>  		rproc->auto_boot = of_property_read_bool(np, "fsl,auto-boot");
>  
> +	ret = of_property_read_u32(dev->of_node, "fsl,startup-delay-ms", &priv->startup_delay);
> +	if (ret)
> +		priv->startup_delay = 0;
> +
>  	ret = rproc_add(rproc);
>  	if (ret) {
>  		dev_err(dev, "rproc_add failed\n");
> -- 
> 2.40.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: Mathieu Poirier <mathieu.poirier@linaro.org>
To: Marek Vasut <marex@denx.de>
Cc: linux-remoteproc@vger.kernel.org, Peng Fan <peng.fan@nxp.com>,
	Jacky Bai <ping.bai@nxp.com>, Ye Li <ye.li@nxp.com>,
	Bjorn Andersson <andersson@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Fabio Estevam <festevam@gmail.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Rob Herring <robh+dt@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/2] remoteproc: imx_rproc: add start up delay
Date: Mon, 10 Jul 2023 09:53:59 -0600	[thread overview]
Message-ID: <ZKwpl1ZGJcX2RmJb@p14s> (raw)
In-Reply-To: <20230707232444.374431-2-marex@denx.de>

On Sat, Jul 08, 2023 at 01:24:44AM +0200, Marek Vasut wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> There is case that after remoteproc start remote processor[M4], the M4
> runs slow and before M4 finish its own rpmsg framework initialization,
> linux sends out vring kick message, then M4 firmware drops the kick
> message. Some NXP released Cortex-M[x] images has such limitation that
> it requires linux sends out vring kick message after M4 firmware finish
> its rpmsg framework initialization.
> 
> Reviewed-by: Jacky Bai <ping.bai@nxp.com>
> Reviewed-by: Ye Li <ye.li@nxp.com>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> Note: picked from NXP downstream LF-6630-2 remoteproc: imx_rproc: add start up delay
> https://github.com/nxp-imx/linux-imx.git 0b1b91c95b291a3b60d6224b13f6a95a75896abf
> ---
> Note: Literally all of the NXP BSP 2.13.0 firmware builds fail to boot
>       without this being set to something like 50..500 ms , so this is
>       rather useful to have.

My stance on this hasn't changed - hacks such as these do not scale and are a
nightmare to maintain.  The problem should be fixed in the M4's firmware.

> ---
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Cc: NXP Linux Team <linux-imx@nxp.com>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-remoteproc@vger.kernel.org
> ---
>  drivers/remoteproc/imx_rproc.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index f9874fc5a80ff..d0eb96d6a4fe1 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -6,6 +6,7 @@
>  #include <dt-bindings/firmware/imx/rsrc.h>
>  #include <linux/arm-smccc.h>
>  #include <linux/clk.h>
> +#include <linux/delay.h>
>  #include <linux/err.h>
>  #include <linux/firmware/imx/sci.h>
>  #include <linux/interrupt.h>
> @@ -110,6 +111,7 @@ struct imx_rproc {
>  	u32				core_index;
>  	struct device                   **pd_dev;
>  	struct device_link              **pd_dev_link;
> +	u32				startup_delay;
>  };
>  
>  static const struct imx_rproc_att imx_rproc_att_imx93[] = {
> @@ -382,6 +384,9 @@ static int imx_rproc_start(struct rproc *rproc)
>  	if (ret)
>  		dev_err(dev, "Failed to enable remote core!\n");
>  
> +	if (priv->startup_delay)
> +		msleep(priv->startup_delay);
> +
>  	return ret;
>  }
>  
> @@ -1090,6 +1095,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  	if (rproc->state != RPROC_DETACHED)
>  		rproc->auto_boot = of_property_read_bool(np, "fsl,auto-boot");
>  
> +	ret = of_property_read_u32(dev->of_node, "fsl,startup-delay-ms", &priv->startup_delay);
> +	if (ret)
> +		priv->startup_delay = 0;
> +
>  	ret = rproc_add(rproc);
>  	if (ret) {
>  		dev_err(dev, "rproc_add failed\n");
> -- 
> 2.40.1
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-07-10 15:54 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-07 23:24 [PATCH 1/2] dt-bindings: remoteproc: imx_rproc: Document fsl,startup-delay-ms Marek Vasut
2023-07-07 23:24 ` Marek Vasut
2023-07-07 23:24 ` [PATCH 2/2] remoteproc: imx_rproc: add start up delay Marek Vasut
2023-07-07 23:24   ` Marek Vasut
2023-07-10 15:53   ` Mathieu Poirier [this message]
2023-07-10 15:53     ` Mathieu Poirier
2023-07-10 16:31     ` Marek Vasut
2023-07-10 16:31       ` Marek Vasut
2023-07-10  1:22 ` [PATCH 1/2] dt-bindings: remoteproc: imx_rproc: Document fsl,startup-delay-ms Peng Fan
2023-07-10  1:22   ` Peng Fan
2023-07-10  9:13   ` Marek Vasut
2023-07-10  9:13     ` Marek Vasut
2023-07-10  8:12 ` Krzysztof Kozlowski
2023-07-10  8:12   ` Krzysztof Kozlowski
2023-07-10  9:18   ` Marek Vasut
2023-07-10  9:18     ` Marek Vasut
2023-07-10 12:52     ` Krzysztof Kozlowski
2023-07-10 12:52       ` Krzysztof Kozlowski
2023-07-10 13:46       ` Marek Vasut
2023-07-10 13:46         ` Marek Vasut
2023-07-10 20:00         ` Krzysztof Kozlowski
2023-07-10 20:00           ` Krzysztof Kozlowski
2023-07-10 21:52           ` Marek Vasut
2023-07-10 21:52             ` Marek Vasut
2023-07-10 22:01             ` Mathieu Poirier
2023-07-10 22:01               ` Mathieu Poirier
2023-07-10 22:23               ` Marek Vasut
2023-07-10 22:23                 ` Marek Vasut
2023-07-11  6:58                 ` Frieder Schrempf
2023-07-11  6:58                   ` Frieder Schrempf
2023-07-11 16:21                 ` Mathieu Poirier
2023-07-11 16:21                   ` Mathieu Poirier
2023-07-20 12:39                   ` Marek Vasut
2023-07-20 12:39                     ` Marek Vasut
2023-07-11  6:02             ` Krzysztof Kozlowski
2023-07-11  6:02               ` Krzysztof Kozlowski
2023-07-11 15:10               ` Marek Vasut
2023-07-11 15:10                 ` Marek Vasut

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=ZKwpl1ZGJcX2RmJb@p14s \
    --to=mathieu.poirier@linaro.org \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=marex@denx.de \
    --cc=peng.fan@nxp.com \
    --cc=ping.bai@nxp.com \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=ye.li@nxp.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 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.