Re: [PATCH 3/3] remoteproc: zynqmp: release mailbox channels on shutdown
From: Mathieu Poirier
Date: Tue Mar 17 2026 - 11:48:53 EST
On Mon, Mar 16, 2026 at 11:37:05AM -0500, Shah, Tanmay wrote:
>
>
> On 3/16/2026 10:38 AM, Mathieu Poirier wrote:
> > On Tue, Mar 10, 2026 at 11:04:54AM -0500, Shah, Tanmay wrote:
> >>
> >>
> >> On 3/10/2026 10:29 AM, Mathieu Poirier wrote:
> >>> On Tue, Mar 03, 2026 at 03:51:28PM -0800, Tanmay Shah wrote:
> >>>> mailbox driver can't introduce shutdown callback, as it might endup
> >>>> closing mbox channels prematurely. By allowing the client driver to
> >>>> manage the shutdown process, it's ensured that mailbox channels are
> >>>> closed only when they are no longer needed.
> >>>>
> >>>> Signed-off-by: Tanmay Shah <tanmay.shah@xxxxxxx>
> >>>> ---
> >>>> drivers/remoteproc/xlnx_r5_remoteproc.c | 2 ++
> >>>> 1 file changed, 2 insertions(+)
> >>>>
> >>>> diff --git a/drivers/remoteproc/xlnx_r5_remoteproc.c b/drivers/remoteproc/xlnx_r5_remoteproc.c
> >>>> index 5e92dc51f1c0..50a9974f3202 100644
> >>>> --- a/drivers/remoteproc/xlnx_r5_remoteproc.c
> >>>> +++ b/drivers/remoteproc/xlnx_r5_remoteproc.c
> >>>> @@ -1490,6 +1490,8 @@ static void zynqmp_r5_remoteproc_shutdown(struct platform_device *pdev)
> >>>> dev_err(cluster->dev, "failed to %s rproc %d\n",
> >>>> rproc_state_str, rproc->index);
> >>>> }
> >>>> +
> >>>> + zynqmp_r5_free_mbox(r5_core->ipi);
> >>>
> >>> This is already called in zynqmp_r5_cluster_exit(), why doing it here again?
> >>>
> >>
> >> Hi,
> >>
> >> Thanks for reviews.
> >> I think cluster_exit() call is called only during driver unload. Where
> >> as shutdown callback is called during power-off commands of linux like
> >> reboot or shutdown.
> >>
> >> That is why I am calling it separately during shutdown() callback.
> >
> > Then call zynqmp_r5_free_mbox() from zynqmp_r5_remoteproc_shutdown() rather than
> > zynqmp_r5_cluster_exit().
> >
>
> I have to call zynqmp_r5_free_mbox() from both handlers i.e.
> platform_driver.remove() and platform_driver.shutdown(). I can't skip
> either of them.
>
> Because during driver unload (rmmod), shutdown() handler won't be
> called. And during power-off commands (reboot, shutdown) remove()
> handler won't be called.
I was under the impression that during system shutdown, ->remove() and
->shutdown() were called sequentially. I looked into the platform_driver
structure documentation and nothing of that nature is described, leading me to
beleive your assessment is correct.
I'll apply your patch.
>
> Let me know if I am still missing something.
>
> Thanks,
> Tanmay
>
> >>
> >> Thanks,
> >> Tanmay
> >>
> >>> I have applied the other two patches in this series.
> >>>
> >>> Thanks,
> >>> Mathieu
> >>>
> >>>> }
> >>>> }
> >>>>
> >>>> --
> >>>> 2.34.1
> >>>>
> >>
>