[PATCH v2 1/3] remoteproc: xlnx: enable boot recovery

Tanmay Shah posted 3 patches 2 months, 3 weeks ago
[PATCH v2 1/3] remoteproc: xlnx: enable boot recovery
Posted by Tanmay Shah 2 months, 3 weeks ago
This is the default method to recover the remote processor from crash.
During this recovery the Linux will stop the remote, load the same
firmware again and start the remote processor. As of now, coredump
callback does not contain any useful implementation, but this can be
changed as required.

Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
---
 drivers/remoteproc/xlnx_r5_remoteproc.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c
index 0b7b173d0d26..8677b732ad14 100644
--- a/drivers/remoteproc/xlnx_r5_remoteproc.c
+++ b/drivers/remoteproc/xlnx_r5_remoteproc.c
@@ -891,6 +891,11 @@ static int zynqmp_r5_detach(struct rproc *rproc)
 	return 0;
 }
 
+static void zynqmp_r5_coredump(struct rproc *rproc)
+{
+	(void)rproc;
+}
+
 static const struct rproc_ops zynqmp_r5_rproc_ops = {
 	.prepare	= zynqmp_r5_rproc_prepare,
 	.unprepare	= zynqmp_r5_rproc_unprepare,
@@ -905,6 +910,7 @@ static const struct rproc_ops zynqmp_r5_rproc_ops = {
 	.get_loaded_rsc_table = zynqmp_r5_get_loaded_rsc_table,
 	.attach		= zynqmp_r5_attach,
 	.detach		= zynqmp_r5_detach,
+	.coredump	= zynqmp_r5_coredump,
 };
 
 /**
@@ -938,7 +944,7 @@ static struct zynqmp_r5_core *zynqmp_r5_add_rproc_core(struct device *cdev)
 
 	rproc_coredump_set_elf_info(r5_rproc, ELFCLASS32, EM_ARM);
 
-	r5_rproc->recovery_disabled = true;
+	r5_rproc->recovery_disabled = false;
 	r5_rproc->has_iommu = false;
 	r5_rproc->auto_boot = false;
 	r5_core = r5_rproc->priv;
-- 
2.34.1
Re: [PATCH v2 1/3] remoteproc: xlnx: enable boot recovery
Posted by Mathieu Poirier 2 months, 2 weeks ago
Good morning,

On Thu, Nov 13, 2025 at 07:44:02AM -0800, Tanmay Shah wrote:
> This is the default method to recover the remote processor from crash.
> During this recovery the Linux will stop the remote, load the same
> firmware again and start the remote processor. As of now, coredump
> callback does not contain any useful implementation, but this can be
> changed as required.
> 
> Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
> ---
>  drivers/remoteproc/xlnx_r5_remoteproc.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c
> index 0b7b173d0d26..8677b732ad14 100644
> --- a/drivers/remoteproc/xlnx_r5_remoteproc.c
> +++ b/drivers/remoteproc/xlnx_r5_remoteproc.c
> @@ -891,6 +891,11 @@ static int zynqmp_r5_detach(struct rproc *rproc)
>  	return 0;
>  }
>  
> +static void zynqmp_r5_coredump(struct rproc *rproc)
> +{
> +	(void)rproc;
> +}
> +

Function rproc_coredump(), which is set by default in rproc_alloc_ops(), won't
work?  If not please indicate why this is the case, otherwise this patch can be
dropped.

>  static const struct rproc_ops zynqmp_r5_rproc_ops = {
>  	.prepare	= zynqmp_r5_rproc_prepare,
>  	.unprepare	= zynqmp_r5_rproc_unprepare,
> @@ -905,6 +910,7 @@ static const struct rproc_ops zynqmp_r5_rproc_ops = {
>  	.get_loaded_rsc_table = zynqmp_r5_get_loaded_rsc_table,
>  	.attach		= zynqmp_r5_attach,
>  	.detach		= zynqmp_r5_detach,
> +	.coredump	= zynqmp_r5_coredump,
>  };
>  
>  /**
> @@ -938,7 +944,7 @@ static struct zynqmp_r5_core *zynqmp_r5_add_rproc_core(struct device *cdev)
>  
>  	rproc_coredump_set_elf_info(r5_rproc, ELFCLASS32, EM_ARM);
>  
> -	r5_rproc->recovery_disabled = true;
> +	r5_rproc->recovery_disabled = false;
>  	r5_rproc->has_iommu = false;
>  	r5_rproc->auto_boot = false;
>  	r5_core = r5_rproc->priv;
> -- 
> 2.34.1
>
Re: [PATCH v2 1/3] remoteproc: xlnx: enable boot recovery
Posted by Tanmay Shah 2 months, 1 week ago
Hi Mathieu,

Thanks for reviews. Just got back from the vacation hence replying now.


On 11/20/25 11:50 AM, Mathieu Poirier wrote:
> Good morning,
> 
> On Thu, Nov 13, 2025 at 07:44:02AM -0800, Tanmay Shah wrote:
>> This is the default method to recover the remote processor from crash.
>> During this recovery the Linux will stop the remote, load the same
>> firmware again and start the remote processor. As of now, coredump
>> callback does not contain any useful implementation, but this can be
>> changed as required.
>>
>> Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
>> ---
>>   drivers/remoteproc/xlnx_r5_remoteproc.c | 8 +++++++-
>>   1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c
>> index 0b7b173d0d26..8677b732ad14 100644
>> --- a/drivers/remoteproc/xlnx_r5_remoteproc.c
>> +++ b/drivers/remoteproc/xlnx_r5_remoteproc.c
>> @@ -891,6 +891,11 @@ static int zynqmp_r5_detach(struct rproc *rproc)
>>   	return 0;
>>   }
>>   
>> +static void zynqmp_r5_coredump(struct rproc *rproc)
>> +{
>> +	(void)rproc;
>> +}
>> +
> 
> Function rproc_coredump(), which is set by default in rproc_alloc_ops(), won't
> work?  If not please indicate why this is the case, otherwise this patch can be
> dropped.

Thanks, I completely missed it. this function isn't needed and will be 
dropped.

> 
>>   static const struct rproc_ops zynqmp_r5_rproc_ops = {
>>   	.prepare	= zynqmp_r5_rproc_prepare,
>>   	.unprepare	= zynqmp_r5_rproc_unprepare,
>> @@ -905,6 +910,7 @@ static const struct rproc_ops zynqmp_r5_rproc_ops = {
>>   	.get_loaded_rsc_table = zynqmp_r5_get_loaded_rsc_table,
>>   	.attach		= zynqmp_r5_attach,
>>   	.detach		= zynqmp_r5_detach,
>> +	.coredump	= zynqmp_r5_coredump,
>>   };
>>   
>>   /**
>> @@ -938,7 +944,7 @@ static struct zynqmp_r5_core *zynqmp_r5_add_rproc_core(struct device *cdev)
>>   
>>   	rproc_coredump_set_elf_info(r5_rproc, ELFCLASS32, EM_ARM);
>>   
>> -	r5_rproc->recovery_disabled = true;
>> +	r5_rproc->recovery_disabled = false;

This part of the patch is still needed, and I will move it to 3/3. So 
this whole patch can be dropped.

Thanks.

>>   	r5_rproc->has_iommu = false;
>>   	r5_rproc->auto_boot = false;
>>   	r5_core = r5_rproc->priv;
>> -- 
>> 2.34.1
>>