Messages in this thread | | | Date | Mon, 23 Sep 2013 14:28:06 +0200 | From | Johan Hovold <> | Subject | Re: [PATCH] driver core: prevent deferred probe with platform_driver_probe |
| |
On Mon, Sep 23, 2013 at 12:01:40PM +0100, Mark Brown wrote: > On Mon, Sep 23, 2013 at 10:48:47AM +0200, Johan Hovold wrote: > > Prevent drivers relying on platform_driver_probe from requesting > > deferred probing in order to avoid further futile probe attempts (either > > the driver has been unregistered or its probe function has been set to > > platform_drv_probe_fail when probing is retried). > > > > Note that several platform drivers currently return subsystem errors > > from probe and that these can include -EPROBE_DEFER (e.g. if a gpio > > request fails). > > This doesn't seem like the right end to address the problem from, it > seems like it would be better to move these drivers over to being normal > plaform drivers. Using module_platform_driver() means relying on init > ordering which is the sort of thing we're trying to get away from.
I actually started out doing that, but it's getting a bit hard to audit which drivers could actually request probe deferral since gpio and later other subsystems started returning -EPROBE_DEFER. I found six by just grepping for gpio_request, but some of these calls can be made in helper functions (e.g. mmc_gpio_request_cd even though that one was easy to find).
Having a warning printed by platform_drv_probe if a platform driver inadvertently requests probe deferral could be useful to catch any mistakes even if we start moving probe functions out of __init.
I'll fix up the six drivers I found meanwhile.
Johan
| |