Commits
Peter Chen committed cf4c986d395
MLK-20346 usb: chipidea: change power_lost workqueue as freezable Like commit d144dfea8af7 ("usb: chipidea: otg: change workqueue ci_otg as freezable"), the power_lost work item may try to remove hcd if controller is powered off during the system suspend, and the similar deadlock happens, see below dumps. Meanwhile, with this change, we need to disable USB interrupt during the work item runs (after driver resume has finished), otherwise, USB transfer will be timeout (5s) due to USB interrupt is disabled and IAA watchdog is still not ready at that time. Workqueue: events ci_power_lost_work Call trace: [<ffff000008085c44>] __switch_to+0x8c/0xd0 [<ffff000008d7bbf4>] __schedule+0x19c/0x5d8 [<ffff000008d7c068>] schedule+0x38/0xa0 [<ffff000008d7f3b4>] schedule_timeout+0x19c/0x338 [<ffff000008d7cc10>] wait_for_common+0xa0/0x148 [<ffff000008d7cccc>] wait_for_completion+0x14/0x20 [<ffff0000080e6040>] flush_work+0xd8/0x1f0 [<ffff0000080e61f4>] flush_delayed_work+0x3c/0x48 [<ffff0000081ae1c8>] wb_shutdown+0x90/0xd0 [<ffff0000081ae688>] bdi_unregister+0x58/0x1c0 [<ffff000008413a60>] del_gendisk+0x218/0x228 [<ffff00000871683c>] sd_remove+0x64/0xc0 [<ffff0000086b6eec>] device_release_driver_internal+0x154/0x1f0 [<ffff0000086b6f9c>] device_release_driver+0x14/0x20 [<ffff0000086b5d40>] bus_remove_device+0xc8/0x108 [<ffff0000086b2a08>] device_del+0x1f8/0x300 [<ffff0000087049ec>] __scsi_remove_device+0xec/0x128 [<ffff000008702c70>] scsi_forget_host+0x70/0x78 [<ffff0000086f7ee8>] scsi_remove_host+0xa0/0x140 [<ffff0000088e0588>] usb_stor_disconnect+0x50/0xc0 [<ffff00000887eab8>] usb_unbind_interface+0x78/0x280 [<ffff0000086b6eec>] device_release_driver_internal+0x154/0x1f0 [<ffff0000086b6f9c>] device_release_driver+0x14/0x20 [<ffff0000086b5d40>] bus_remove_device+0xc8/0x108 [<ffff0000086b2a08>] device_del+0x1f8/0x300 [<ffff00000887c364>] usb_disable_device+0xa4/0x210 [<ffff000008872cfc>] usb_disconnect+0x7c/0x240 [<ffff000008872e40>] usb_disconnect+0x1c0/0x240 [<ffff000008878e10>] usb_remove_hcd+0xc0/0x1d8 [<ffff0000088e7bac>] host_stop+0x34/0x90 [<ffff0000088e4088>] ci_handle_id_switch+0x70/0x1d0 [<ffff0000088e3038>] ci_power_lost_work+0x90/0xa8 [<ffff0000080e7100>] process_one_work+0x1e0/0x340 [<ffff0000080e72b0>] worker_thread+0x50/0x458 [<ffff0000080ed32c>] kthread+0xfc/0x128 [<ffff000008084eb8>] ret_from_fork+0x10/0x18 Reviewed-by: Jun Li <jun.li@nxp.com> Signed-off-by: Peter Chen <peter.chen@nxp.com>