From b1af46cf1a4682766de78d0d4aa32928c4e57eec Mon Sep 17 00:00:00 2001 From: Venkat Gopalakrishnan Date: Fri, 4 Nov 2016 12:27:07 -0700 Subject: [PATCH] scsi: ufs: fix sleep in atomic context Make sure spin lock is released before calling print host regs, as that call sleeps while dumping lots of registers. Change-Id: I171c91e700c24ecc213ccda705bbe6188d22a43a Signed-off-by: Venkat Gopalakrishnan --- drivers/scsi/ufs/ufshcd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 862d56e78086..7577f9454626 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -5696,10 +5696,13 @@ static void ufshcd_err_handler(struct work_struct *work) dev_err(hba->dev, "%s: saved_err 0x%x saved_uic_err 0x%x", __func__, hba->saved_err, hba->saved_uic_err); if (!hba->silence_err_logs) { + /* release lock as print host regs sleeps */ + spin_unlock_irqrestore(hba->host->host_lock, flags); ufshcd_print_host_regs(hba); ufshcd_print_host_state(hba); ufshcd_print_pwr_info(hba); ufshcd_print_tmrs(hba, hba->outstanding_tasks); + spin_lock_irqsave(hba->host->host_lock, flags); } }