mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
scsi: ufs: Move ufshcd_vops_dbg_register_dump out of ufshcd_print_host_regs
If ufshcd_print_host_regs() is called from IRQ context, some registers like test bus and UFS PHY will not be printed by ufshcd_vops_dbg_register_dump() due to sleep is not allowed. Move ufshcd_vops_dbg_register_dump out of ufshcd_print_host_regs and explicitly call ufshcd_vops_dbg_register_dump where we need to. Change-Id: Icde9a71fc578c43af04a5329b04353d87217ce4f Signed-off-by: Can Guo <cang@codeaurora.org>
This commit is contained in:
parent
4b6fb5312e
commit
8611eb0c52
1 changed files with 17 additions and 7 deletions
|
|
@ -418,8 +418,6 @@ static void ufshcd_print_host_regs(struct ufs_hba *hba)
|
|||
|
||||
ufshcd_print_clk_freqs(hba);
|
||||
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
|
||||
ufshcd_crypto_debug(hba);
|
||||
}
|
||||
|
||||
|
|
@ -3912,6 +3910,7 @@ out:
|
|||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_pwr_info(hba);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
}
|
||||
|
||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||
|
|
@ -4623,6 +4622,7 @@ out:
|
|||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_pwr_info(hba);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -4979,8 +4979,10 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
|
|||
dev_err(hba->dev,
|
||||
"OCS error from controller = %x for tag %d\n",
|
||||
ocs, lrbp->task_tag);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_pwr_info(hba);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
break;
|
||||
} /* end of switch */
|
||||
|
||||
|
|
@ -5533,6 +5535,11 @@ static void ufshcd_err_handler(struct work_struct *work)
|
|||
if (!ret)
|
||||
goto skip_err_handling;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(hba->host->host_lock, flags);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||
|
||||
if ((hba->saved_err & INT_FATAL_ERRORS) ||
|
||||
(hba->saved_err & UFSHCD_UIC_HIBERN8_MASK) ||
|
||||
((hba->saved_err & UIC_ERROR) &&
|
||||
|
|
@ -5780,8 +5787,9 @@ static irqreturn_t ufshcd_check_errors(struct ufs_hba *hba)
|
|||
__func__, hba->saved_err,
|
||||
hba->saved_uic_err);
|
||||
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_pwr_info(hba);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_print_tmrs(hba, hba->outstanding_tasks);
|
||||
ufshcd_print_trs(hba, hba->outstanding_reqs,
|
||||
pr_prdt);
|
||||
|
|
@ -6358,10 +6366,11 @@ static int ufshcd_abort(struct scsi_cmnd *cmd)
|
|||
scsi_print_command(hba->lrb[tag].cmd);
|
||||
if (!hba->req_abort_count) {
|
||||
ufshcd_update_reg_hist(&hba->ufs_stats.task_abort, 0);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_print_trs(hba, 1 << tag, true);
|
||||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_pwr_info(hba);
|
||||
ufshcd_print_trs(hba, 1 << tag, true);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
} else {
|
||||
ufshcd_print_trs(hba, 1 << tag, false);
|
||||
}
|
||||
|
|
@ -8744,8 +8753,9 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
|
|||
err = ufshcd_hba_enable(hba);
|
||||
if (err) {
|
||||
dev_err(hba->dev, "Host controller enable failed\n");
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_print_host_state(hba);
|
||||
ufshcd_print_host_regs(hba);
|
||||
ufshcd_vops_dbg_register_dump(hba);
|
||||
goto out_remove_scsi_host;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue