Re: [PATCH v2 8/9] ufs: core: Move the MCQ scsi_add_host() call

Manivannan Sadhasivam
2024-08-25T05:38:59Z

On Thu, Aug 22, 2024 at 02:36:09PM -0700, Bart Van Assche wrote:
> 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
> ufshcd_post_device_init() calls. This patch also prepares for moving
> both scsi_add_host() calls into ufshcd_add_scsi_host().
>

This needs changes due to the addition of lsdb check that skips scsi_add_host().

- Mani

> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
> ---
> drivers/ufs/core/ufshcd.c | 43 ++++++++++++++++-----------------------
> 1 file changed, 18 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 6a3873991d2a..b9aaa3c55d17 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -10404,15 +10404,27 @@ static int ufshcd_add_scsi_host(struct ufs_hba *hba)
> {
> int err;
>
> - if (!is_mcq_supported(hba)) {
> - err = scsi_add_host(hba->host, hba->dev);
> - if (err) {
> - dev_err(hba->dev, "scsi_add_host failed\n");
> - return err;
> + 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);
> }
> - hba->scsi_host_added = true;
> }
>
> + 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;
> +
> hba->tmf_tag_set = (struct blk_mq_tag_set) {
> .nr_hw_queues = 1,
> .queue_depth = hba->nutmrs,
> @@ -10650,25 +10662,6 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
> err = ufshcd_device_params_init(hba);
> 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);
> if (err)

--
மணிவண்ணன் சதாசிவம்