diff options
| author | Asutosh Das <asutoshd@codeaurora.org> | 2017-11-14 17:01:40 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-12-13 05:54:21 -0800 |
| commit | 09460e01389a884f5fb6b8932bf88710c57e0da3 (patch) | |
| tree | 94d153829a8838260428df76007b3749a540c347 /scripts/extract-cert.c | |
| parent | 2e1be1a230f9282b997959655510a6f905ed17a4 (diff) | |
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>
Diffstat (limited to 'scripts/extract-cert.c')
0 files changed, 0 insertions, 0 deletions
