Skip to content
  • Inaky Perez-Gonzalez's avatar
    wimax/i2400m: fix deadlock: don't do BUS reset under i2400m->init_mutex · b9ee9501
    Inaky Perez-Gonzalez authored
    
    
    Since the addition of the pre/post reset handlers, it became clear
    that we cannot do a I2400M-RT-BUS type reset while holding the
    init_mutex, as in the case of USB, it will deadlock when trying to
    call i2400m_pre_reset().
    
    Thus, the following changes:
    
     - clarify the fact that calling bus_reset() w/ I2400M_RT_BUS while
       holding init_mutex is a no-no.
    
     - i2400m_dev_reset_handle() will do a BUS reset to recover a gone
       device after unlocking init_mutex.
    
     - in the USB reset implementation, when cold and warm reset fails,
       fallback to QUEUING a usb reset, not executing a USB reset, so it
       happens from another context and does not deadlock.
    
    Signed-off-by: default avatarInaky Perez-Gonzalez <inaky@linux.intel.com>
    b9ee9501