On Tue, Nov 22, 2022 at 08:10:17PM -0800, Asutosh Das wrote: > If MCQ support is present, enabling it after MCQ support > has been configured would require reallocating tags and memory. > It would also free up the already allocated memory in > Single Doorbell Mode. So defer invoking scsi_add_host() until > MCQ is configured. Why cannot we do it for non MCQ case as well? Thanks, Mani > > Co-developed-by: Can Guo <quic_cang@xxxxxxxxxxx> > Signed-off-by: Can Guo <quic_cang@xxxxxxxxxxx> > Signed-off-by: Asutosh Das <quic_asutoshd@xxxxxxxxxxx> > --- > drivers/ufs/core/ufshcd.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index 08be8ad..42c49ce 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -8208,6 +8208,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params) > int ret; > unsigned long flags; > ktime_t start = ktime_get(); > + struct Scsi_Host *host = hba->host; > > hba->ufshcd_state = UFSHCD_STATE_RESET; > > @@ -8242,6 +8243,14 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params) > ret = ufshcd_device_params_init(hba); > if (ret) > goto out; > + > + if (is_mcq_supported(hba)) { > + ret = scsi_add_host(host, hba->dev); > + if (ret) { > + dev_err(hba->dev, "scsi_add_host failed\n"); > + goto out; > + } > + } > } > > ufshcd_tune_unipro_params(hba); > @@ -9838,10 +9847,12 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) > hba->is_irq_enabled = true; > } > > - err = scsi_add_host(host, hba->dev); > - if (err) { > - dev_err(hba->dev, "scsi_add_host failed\n"); > - goto out_disable; > + if (!is_mcq_supported(hba)) { > + err = scsi_add_host(host, hba->dev); > + if (err) { > + dev_err(hba->dev, "scsi_add_host failed\n"); > + goto out_disable; > + } > } > > hba->tmf_tag_set = (struct blk_mq_tag_set) { > -- > 2.7.4 > -- மணிவண்ணன் சதாசிவம்