Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8611eb0c authored by Can Guo's avatar Can Guo
Browse files

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: default avatarCan Guo <cang@codeaurora.org>
parent 4b6fb531
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -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 @@ static int ufshcd_uic_pwr_ctrl(struct ufs_hba *hba, struct uic_command *cmd)
		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 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
		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;
	}