Messages in this thread | | | Date | Sat, 19 Nov 2022 22:57:02 +0100 | Subject | Re: [PATCH] clk: imx8mp: register driver at arch_initcall time | From | Rasmus Villemoes <> |
| |
On 19/11/2022 22.38, Fabio Estevam wrote: > On Wed, Sep 28, 2022 at 9:41 AM Rasmus Villemoes > <linux@rasmusvillemoes.dk> wrote: >> >> We have an imx8mp-based board with an external gpio-triggered >> watchdog. Currently, we don't get to handle that in time before it >> resets the board. >> >> The probe of the watchdog device gets deferred because the SOC's GPIO >> controller is not yet ready, and the probe of that in turn gets deferred >> because its clock provider (namely, this driver) is not yet >> ready. Altogether, the watchdog does not get handled until the late >> initcall deferred_probe_initcall has made sure all leftover devices >> have been probed, and that's way too late. >> >> Aside from being necessary for our board, this also reduces total boot >> time because fewer device probes get deferred. >> >> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> >> --- >> It would probably be reasonable to do the same to the other imx8m* clk >> drivers, but I don't have any such hardware to test on. > > Agreed. > >> +static void __exit imx8mp_clk_exit(void) >> +{ >> + platform_driver_unregister(&imx8mp_clk_driver); >> +} >> +module_exit(imx8mp_clk_exit); > > Isn't module_exit() unnecessary here, since we pass suppress_bind_attrs = true?
Sorry, I don't follow. Before this patch, the driver also implicitly had a module_exit() doing exactly this platform_driver_unregister(), it was just hidden inside the module_platform_driver() macro. And I think that's necessary if one wants to test that the module can be loaded and unloaded (I don't think it's ever useful or even possible to have it be a module on an actual imx8mp board).
For a modular build, this patch changes nothing since all foo_initcall levels are translated to module_initcall for those. And when the driver is built-in, the __exit code, both before and after this patch, is discarded in the final image.
Rasmus
| |