On 8/27/2018 3:52 PM, Dennis Dalessandro wrote:
can you please confirm?
Ah yes, silly me. pci_bus_reset() returns 0 and it does go on but doesn't make
it to the trylock, it gets hung calling pci_bus_save_and_disable().
OK. That makes sense now. pci_bus_save_and_disable() is also trying to
obtain a device lock via pci_dev_lock().
Since you are calling this from probe time, you are getting dead lock
because device is locked.
Is it possible to defer this secondary bus reset operation to post probe?
Possible solutions are:
1. introduce a locked reset API
2. skip lock during probe
3. bring back raw reset API even though it is undesirable.
Other opinions?
BTW, please file a bugzilla and capture your email details there so that we
can have record of what we are doing?
-Denny