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 <[email protected]> > >>>> --- > >>>> 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 > >>>> > >> >

