remoteproc: qcom: pas: Fix subdevice add order

Message ID 1671024983-22634-1-git-send-email-quic_mojha@quicinc.com
State New
Headers
Series remoteproc: qcom: pas: Fix subdevice add order |

Commit Message

Mukesh Ojha Dec. 14, 2022, 1:36 p.m. UTC
  Currently, the notification like QCOM_SSR_BEFORE_SHUTDOWN is not exactly
sent before starting shutdown activity on remote subsystem but it is
getting sent after sysmon shutdown request to remote.

On getting QCOM_SSR_BEFORE_SHUTDOWN, some client want remote subsystem
to be alive to communicate but as sysmon shutdown request is getting
sent to remote before QCOM_SSR_BEFORE_SHUTDOWN notification sent to
kernel client due to which remote is not in a condition to communicate
with kernel clients.

Fixing the subdevice ordering will fix this as ssr subdevice will be
first one to get triggered in shutdown/stop path.

Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
---
 drivers/remoteproc/qcom_q6v5_pas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Mukesh Ojha Dec. 27, 2022, 8:56 a.m. UTC | #1
Hi,

Friendly reminder for review.

-Mukesh

On 12/14/2022 7:06 PM, Mukesh Ojha wrote:
> Currently, the notification like QCOM_SSR_BEFORE_SHUTDOWN is not exactly
> sent before starting shutdown activity on remote subsystem but it is
> getting sent after sysmon shutdown request to remote.
> 
> On getting QCOM_SSR_BEFORE_SHUTDOWN, some client want remote subsystem
> to be alive to communicate but as sysmon shutdown request is getting
> sent to remote before QCOM_SSR_BEFORE_SHUTDOWN notification sent to
> kernel client due to which remote is not in a condition to communicate
> with kernel clients.
> 
> Fixing the subdevice ordering will fix this as ssr subdevice will be
> first one to get triggered in shutdown/stop path.
> 
> Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
> ---
>   drivers/remoteproc/qcom_q6v5_pas.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index 6afd094..5e34d59 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> @@ -538,7 +538,6 @@ static int adsp_probe(struct platform_device *pdev)
>   
>   	qcom_add_glink_subdev(rproc, &adsp->glink_subdev, desc->ssr_name);
>   	qcom_add_smd_subdev(rproc, &adsp->smd_subdev);
> -	qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
>   	adsp->sysmon = qcom_add_sysmon_subdev(rproc,
>   					      desc->sysmon_name,
>   					      desc->ssctl_id);
> @@ -547,6 +546,7 @@ static int adsp_probe(struct platform_device *pdev)
>   		goto detach_proxy_pds;
>   	}
>   
> +	qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
>   	ret = rproc_add(rproc);
>   	if (ret)
>   		goto detach_proxy_pds;
  
Bjorn Andersson Dec. 28, 2022, 6:18 p.m. UTC | #2
On Wed, 14 Dec 2022 19:06:23 +0530, Mukesh Ojha wrote:
> Currently, the notification like QCOM_SSR_BEFORE_SHUTDOWN is not exactly
> sent before starting shutdown activity on remote subsystem but it is
> getting sent after sysmon shutdown request to remote.
> 
> On getting QCOM_SSR_BEFORE_SHUTDOWN, some client want remote subsystem
> to be alive to communicate but as sysmon shutdown request is getting
> sent to remote before QCOM_SSR_BEFORE_SHUTDOWN notification sent to
> kernel client due to which remote is not in a condition to communicate
> with kernel clients.
> 
> [...]

Applied, thanks!

[1/1] remoteproc: qcom: pas: Fix subdevice add order
      commit: cf5865e72236c239317d6c5829ab170419b400a4

Best regards,
  

Patch

diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 6afd094..5e34d59 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -538,7 +538,6 @@  static int adsp_probe(struct platform_device *pdev)
 
 	qcom_add_glink_subdev(rproc, &adsp->glink_subdev, desc->ssr_name);
 	qcom_add_smd_subdev(rproc, &adsp->smd_subdev);
-	qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
 	adsp->sysmon = qcom_add_sysmon_subdev(rproc,
 					      desc->sysmon_name,
 					      desc->ssctl_id);
@@ -547,6 +546,7 @@  static int adsp_probe(struct platform_device *pdev)
 		goto detach_proxy_pds;
 	}
 
+	qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
 	ret = rproc_add(rproc);
 	if (ret)
 		goto detach_proxy_pds;