Message ID | 20220512053021.61650-1-tony@atomide.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | bus: ti-sysc: Fix warnings for unbind for serial | expand |
Hello, Le 12/05/2022 à 07:30, Tony Lindgren a écrit : > We can get "failed to disable" clock_unprepare warnings on unbind at least > for the serial console device if the unbind is done before the device has > been idled. > > As some devices are using deferred idle, we must check the status for > pending idle work to idle the device. I didn't noticed the "failed to disable" warning so far (kernel 5.10.106 from ti-linux-kernel repository) but I applied this patch as suggested [1] while investigating another issue "tty serial 8250 omap driver crash". Reviewed-by: Romain Naour <romain.naour@smile.fr> [1] https://marc.info/?l=linux-omap&m=164484408319083&w=2 Best regards, Romain > > Cc: Romain Naour <romain.naour@smile.fr> > Fixes: 76f0f772e469 ("bus: ti-sysc: Improve handling for no-reset-on-init and no-idle-on-init") > Signed-off-by: Tony Lindgren <tony@atomide.com> > --- > drivers/bus/ti-sysc.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c > --- a/drivers/bus/ti-sysc.c > +++ b/drivers/bus/ti-sysc.c > @@ -3395,7 +3395,9 @@ static int sysc_remove(struct platform_device *pdev) > struct sysc *ddata = platform_get_drvdata(pdev); > int error; > > - cancel_delayed_work_sync(&ddata->idle_work); > + /* Device can still be enabled, see deferred idle quirk in probe */ > + if (cancel_delayed_work_sync(&ddata->idle_work)) > + ti_sysc_idle(&ddata->idle_work.work); > > error = pm_runtime_resume_and_get(ddata->dev); > if (error < 0) {
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -3395,7 +3395,9 @@ static int sysc_remove(struct platform_device *pdev) struct sysc *ddata = platform_get_drvdata(pdev); int error; - cancel_delayed_work_sync(&ddata->idle_work); + /* Device can still be enabled, see deferred idle quirk in probe */ + if (cancel_delayed_work_sync(&ddata->idle_work)) + ti_sysc_idle(&ddata->idle_work.work); error = pm_runtime_resume_and_get(ddata->dev); if (error < 0) {
We can get "failed to disable" clock_unprepare warnings on unbind at least for the serial console device if the unbind is done before the device has been idled. As some devices are using deferred idle, we must check the status for pending idle work to idle the device. Cc: Romain Naour <romain.naour@smile.fr> Fixes: 76f0f772e469 ("bus: ti-sysc: Improve handling for no-reset-on-init and no-idle-on-init") Signed-off-by: Tony Lindgren <tony@atomide.com> --- drivers/bus/ti-sysc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)