Commit 72e97922 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen
Browse files

scsi: ufs: core: Move the MCQ scsi_add_host() call



Whether or not MCQ is used, call scsi_add_host() from
ufshcd_add_scsi_host().  For MCQ this patch swaps the order of the
scsi_add_host() and UFS device initialization. This patch prepares for
combining the two scsi_add_host() calls.

Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20241016201249.2256266-11-bvanassche@acm.org


Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b6195d02
Loading
Loading
Loading
Loading
+19 −22
Original line number Diff line number Diff line
@@ -10344,8 +10344,25 @@ static int ufshcd_add_scsi_host(struct ufs_hba *hba)
{
	int err;

	if (!hba->scsi_host_added) {
		WARN_ON_ONCE(is_mcq_supported(hba));
	if (is_mcq_supported(hba)) {
		ufshcd_mcq_enable(hba);
		err = ufshcd_alloc_mcq(hba);
		if (!err) {
			ufshcd_config_mcq(hba);
		} else {
			/* Continue with SDB mode */
			ufshcd_mcq_disable(hba);
			use_mcq_mode = false;
			dev_err(hba->dev, "MCQ mode is disabled, err=%d\n",
				err);
		}
		err = scsi_add_host(hba->host, hba->dev);
		if (err) {
			dev_err(hba->dev, "scsi_add_host failed\n");
			return err;
		}
		hba->scsi_host_added = true;
	} else {
		if (!hba->lsdb_sup) {
			dev_err(hba->dev,
				"%s: failed to initialize (legacy doorbell mode not supported)\n",
@@ -10606,26 +10623,6 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
	if (err)
		goto out_disable;

	if (is_mcq_supported(hba)) {
		ufshcd_mcq_enable(hba);
		err = ufshcd_alloc_mcq(hba);
		if (!err) {
			ufshcd_config_mcq(hba);
		} else {
			/* Continue with SDB mode */
			ufshcd_mcq_disable(hba);
			use_mcq_mode = false;
			dev_err(hba->dev, "MCQ mode is disabled, err=%d\n",
				err);
		}
		err = scsi_add_host(host, hba->dev);
		if (err) {
			dev_err(hba->dev, "scsi_add_host failed\n");
			goto out_disable;
		}
		hba->scsi_host_added = true;
	}

	err = ufshcd_post_device_init(hba);

initialized: