Hi Daniel, >mwifiex_sdio_remove() calls mwifiex_remove_card() without having taken >any care to finish pending commands, etc. mwifiex_remove_card() >immediately sets surprise_removed which triggers the questionable >"ignore all interrupts" behaviour. If there were any async commands >pending, they complete now, with an interrupt. The interrupt doesn't >get acked, so it becomes an interrupt storm. >Hope that is clearer. Thanks for the clarification. As per our current design, mwifiex_sdio_remove() will be called in following scenarios. 1) Card is powered off / card is unplugged As we are not allowed to interact with hardware (read/disable interrupts), other driver specific cleanup work is performed. 2) Driver is unloaded Here apart from cleanup work in case 1, we do send SHUTDOWN etc. command to firmware to perform hardware cleanup(this code is under if(user_rmmod) check). In your case, as card is powering off, is it ok to access hardware registers to ACK interrupts? If yes, we can disable interrupts before returning "-ENOSYS" in suspend handler. Modifying mwifiex_sdio_remove() to fix interrupt storm issue would break card unplugged scenario. Please let me know your thoughts. Thanks, Amit -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html