[PATCH] mailbox: mtk-cmdq: Add unregister mailbox controller in cmdq_remove()

Jason-JH Lin (林睿祥) Jason-JH.Lin at mediatek.com
Mon Jun 17 20:28:25 PDT 2024


Hi Angelo,

On Fri, 2024-06-14 at 00:52 +0800, Jason-JH.Lin wrote:
> Hi Angelo,
> 
> On Thu, 2024-06-13 at 17:10 +0200, AngeloGioacchino Del Regno wrote:
> > Il 13/06/24 17:06, Jason-JH.Lin ha scritto:
> > > Add unregister mailbox controller in cmdq_remove to fix cmdq
> > > unbind
> > > WARN_ON message from pm_runtime_get_sync() in
> > > cmdq_mbox_shutdown().
> > > 
> > > Fixes: 623a6143a845 ("mailbox: mediatek: Add Mediatek CMDQ
> > > driver")
> > > Signed-off-by: Jason-JH.Lin <jason-jh.lin at mediatek.com>
> > 
> > Hello,
> > 
> > I think you forgot about...
> > 
> > 
> 
> 
https://lore.kernel.org/all/6fcd48b14e865c25e6db7559fe6b946537bfa0ce.camel@mediatek.com/
> > 
> 
> I'll send this series next week after testing it.
> 
> 
> > ...as that would also resolve this one without any hacks.
> 
> I thought it was another problem, so I sent this patch.
> 
> After looking to the kerneldoc of devm_mbox_controller_unregister(),
> I
> found that it's not necessary to call this anywhere.
> 
> I'll drop this patch. Thanks for the review.

I found that the series of "Move pm_runimte_get and put to
mbox_chan_ops API" can not fix this unbind crash issue.

It seems they are 2 different issues.

So I think calling devm_mbox_controller_unregister() in cmdq_remove()
can ensure the CMDQ device is not removed and be paired to
cmdq_probe().

Regards,
Jason-JH.Lin

> 
> Regards,
> Jason-JH.Lin
> 
> > 
> > Cheers,
> > Angelo
> > 
> > > ---
> > >   drivers/mailbox/mtk-cmdq-mailbox.c | 2 ++
> > >   1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/drivers/mailbox/mtk-cmdq-mailbox.c
> > > b/drivers/mailbox/mtk-cmdq-mailbox.c
> > > index 4aa394e91109..1399e18a39a4 100644
> > > --- a/drivers/mailbox/mtk-cmdq-mailbox.c
> > > +++ b/drivers/mailbox/mtk-cmdq-mailbox.c
> > > @@ -371,6 +371,8 @@ static void cmdq_remove(struct
> > > platform_device
> > > *pdev)
> > >   {
> > >   	struct cmdq *cmdq = platform_get_drvdata(pdev);
> > >   
> > > +	devm_mbox_controller_unregister(&pdev->dev, &cmdq->mbox);
> > > +
> > >   	if (cmdq->pdata->sw_ddr_en)
> > >   		cmdq_sw_ddr_enable(cmdq, false);
> > >   
> > 
> > 


More information about the Linux-mediatek mailing list