On 07/03/2019 16:23, Fabien Dessenne wrote: > Requesting hwspinlock, at the first time it is used, is not correct: > indeed, at that moment we are under raw_spin_lock_irqsave() context and > hwspin_lock_request_specific() may sleep ("BUG: sleeping function called > from invalid context"). > Requesting hwspinlock during the init (stm32*_exti_of_init()) is also > not possible (the hwspinlock framework is not ready at that stage of the > kernel init). > As a consequence, add a second level init (probed with arch_initcall) > where we can safely request hwspinlock.
No, this is fairly broken. You're playing with stuff you're not supposed to (OF_POPULATE? really?), and adding initcalls is completely unreliable (things depend on the link order and will randomly break). If you need dependencies, implement them correctly. Turn this driver into a real device driver (in the platform device sense), and return PROBE_DEFER when you can't find your dependency. Thanks, M. -- Jazz is not dead. It just smells funny...