scsi: ufs: Trigger runtime-idle in a separate work
In case of an exception, there could be a deadlock: -000|__switch_to() -001|context_switch(inline) -001|__schedule() -002|schedule() -003|schedule_timeout() -004|do_wait_for_common(inline) -004|__wait_for_common(inline) -004|wait_for_common() -005|wait_for_completion() -006|destroy_work_on_stack(inline) -006|flush_work() -007|ufshcd_suspend() -008|ufshcd_runtime_suspend() -009|ufshcd_pltfrm_runtime_suspend() -010|pm_generic_runtime_suspend() -011|__rpm_callback(inline) -011|rpm_callback() -012|rpm_suspend() -013|rpm_idle() -014|__pm_runtime_idle() -015|ufshcd_exception_event_handler() -016|__read_once_size(inline) -016|static_key_count(inline) -016|static_key_false(inline) -016|trace_workqueue_execute_end(inline) -016|process_one_work() -017|__read_once_size(inline) -017|list_empty(inline) -017|worker_thread() -018|kthread() -019|ret_from_fork(asm) This is caused because in exception handler pm_runtime_put_sync is invoked which calls ufshcd_suspend. And ufshcd_suspend flushes the exception handler work & deadlocks. Hence, schedule the suspend work in a different context. Change-Id: I02524cee5ab2b64e0ad5de873d5318aef7b6ac95 Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org>
Loading
Please register or sign in to comment