Hello Sebastian
Thanks for checking this out,
SA> I tried to figure out if the URB-completion handler uses any
SA> locking and stumbled here.
SA> i2400m_pm_notifier() is called from process context. This
SA> function invokes i2400m_fw_cache() + i2400m_fw_uncache(). Both
SA> functions do spin_lock(&i2400m->rx_lock); while in other
SA> places (say i2400mu_rxd()) it does
SA> spin_lock_irqsave(&i2400m->rx_lock, flags);
SA> So what do I miss? Is this lock never used in interrupt
SA> context and lockdep didn't complain or did nobody try suspend
SA> with this driver before? From what I can tell
SA> i2400m_dev_bootstrap() has the same locking problem.
I don't remember ever getting to try suspend in the driver, so that
might be the case. That said, I haven't touched this code in years, or
the current locking best practices, so I'll let others chime in,
Thomas being prolly one of the key ones.