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.