OSDN Git Service

scsi: ufs: Add clock ungating to a separate workqueue
authorVijay Viswanath <vviswana@codeaurora.org>
Thu, 3 May 2018 11:07:22 +0000 (16:37 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 18 May 2018 16:22:47 +0000 (12:22 -0400)
commit10e5e37581fc5817d52ff5f8e2b3362f64eb04f4
tree0cd3a08994ad1f1b8ded13e502fd93a4475205f6
parent7f6ba4f12e6cbfdefbb95cfd8fc67ece6c15d799
scsi: ufs: Add clock ungating to a separate workqueue

UFS driver can receive a request during memory reclaim by kswapd.  So
when ufs driver puts the ungate work in queue, and if there are no idle
workers, kthreadd is invoked to create a new kworker. Since kswapd task
holds a mutex which kthreadd also needs, this can cause a deadlock
situation. So ungate work must be done in a separate work queue with
WQ_MEM_RECLAIM flag enabled.  Such a workqueue will have a rescue thread
which will be called when the above deadlock condition is possible.

Signed-off-by: Vijay Viswanath <vviswana@codeaurora.org>
Signed-off-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c
drivers/scsi/ufs/ufshcd.h