Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp1479222rwb; Fri, 13 Jan 2023 12:56:35 -0800 (PST) X-Google-Smtp-Source: AMrXdXvhoZCXr8sdvkn1H7G8xfvT8eaCgDLdFAyA838LZK7cuQHpXTFMrZPxGZa95jZ0DBqAi1pU X-Received: by 2002:a17:906:370a:b0:7c0:a350:9d29 with SMTP id d10-20020a170906370a00b007c0a3509d29mr67119265ejc.18.1673643395521; Fri, 13 Jan 2023 12:56:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673643395; cv=none; d=google.com; s=arc-20160816; b=t1iz6u4svq4MHMBaZiKovgmJ/30LDD4T1TLCrh/jRzw48lW/MuC2h6x3kU4VZljLZQ atLtUuOC6DKb92gF1sfoVfP0tFlavtQkYfLEa3hNda8hJ6dM7b6i5Lnmtt5zYcy+Xc6r YPLbNqjTLmIcuiv56KkCiciviVri/DvF8FplEJI35YpndcdS5V357LOmYjCFk8ZPYv7F 8//daylG7sN1AzYrjcZfnsi4/0fZnHMJQpyOHJKlWT8vnOEmhYqal0yeNtWFlDvsKN98 uvDehO3CsTugzl03ef20pcaa0TnIlg4rhmKNOMH58ALXRwu0SE7i8MMwxHQ4mcuUZVqj Qung== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=0kiLjROtxQYUY2/1WbO8053RNyPqhhWEiGvj7qJuDm8=; b=kNOD0l+5YWMHTFO8UvHOzUXadY/R2AzSoyv72UGL0vcsGX65LAGsJQk7v0+oRWCAei sXZqxr90UL6815dLd7YClVgtYYGaEk9GY3hp15gpl3MNOICQkjibzHVC48CU+5QzZdvC QxQfzrXTQ4YbzCI8l/6XFqoOz0d7r9mt2B1O2zJ6MmdsmhZLqS95p4LMI/2qojFbI3i5 z3CWG59i/jFszRr/IZXJPgY/6JApPt2U4h+qO8u8ACLHd7dWDiImVh4F59Z6j9Od22Gw 0SpyGLu+JJ9rfD1eTwEFh3OaCogpqBQdeMPYBi3vUPPxKKSMSpYZxvnAJ/t79W6GGRNK Wa4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=VWaAu8gF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ji21-20020a170907981500b007c14a639de3si23029861ejc.480.2023.01.13.12.56.06; Fri, 13 Jan 2023 12:56:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=VWaAu8gF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229779AbjAMUuz (ORCPT + 52 others); Fri, 13 Jan 2023 15:50:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230150AbjAMUux (ORCPT ); Fri, 13 Jan 2023 15:50:53 -0500 Received: from alexa-out-sd-01.qualcomm.com (alexa-out-sd-01.qualcomm.com [199.106.114.38]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3283B6C079; Fri, 13 Jan 2023 12:50:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1673643052; x=1705179052; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=0kiLjROtxQYUY2/1WbO8053RNyPqhhWEiGvj7qJuDm8=; b=VWaAu8gFTMxXtCI0l9XDPDTJXbTd8Xu3c4EXYJ5idYdHvws0HNKnjxll gplkyz3IYHRVn2lr1BGqMAL4JqScCiYFfghxiP2l/XAXNP+ydgf1Ip70Z 1vEqO9cxsHbXXoBQy0iguECl4ze6hURzSqICOaDJVlv1z1jk2HjmpT3gV k=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 13 Jan 2023 12:50:52 -0800 X-QCInternal: smtphost Received: from unknown (HELO nasanex01a.na.qualcomm.com) ([10.52.223.231]) by ironmsg-SD-alpha.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jan 2023 12:50:51 -0800 Received: from asutoshd-linux1.qualcomm.com (10.80.80.8) by nasanex01a.na.qualcomm.com (10.52.223.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Fri, 13 Jan 2023 12:50:51 -0800 From: Asutosh Das To: , , CC: , , , , , , , , Asutosh Das , , Alim Akhtar , "James E.J. Bottomley" , Jinyoung Choi , open list Subject: [PATCH v13 03/15] ufs: core: Defer adding host to scsi if mcq is supported Date: Fri, 13 Jan 2023 12:48:40 -0800 Message-ID: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01a.na.qualcomm.com (10.52.223.231) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Co-developed-by: Can Guo Signed-off-by: Can Guo Signed-off-by: Asutosh Das Reviewed-by: Bart Van Assche Reviewed-by: Manivannan Sadhasivam --- drivers/ufs/core/ufshcd.c | 24 ++++++++++++++++++++---- include/ufs/ufshcd.h | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 64e0461..2cb05a6 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -95,6 +95,11 @@ /* UFSHC 4.0 compliant HC support this mode, refer param_set_mcq_mode() */ static bool use_mcq_mode = true; +static bool is_mcq_supported(struct ufs_hba *hba) +{ + return hba->mcq_sup && use_mcq_mode; +} + static int param_set_mcq_mode(const char *val, const struct kernel_param *kp) { int ret; @@ -8292,6 +8297,7 @@ static int ufshcd_add_lus(struct ufs_hba *hba) static int ufshcd_device_init(struct ufs_hba *hba, bool init_dev_params) { int ret; + struct Scsi_Host *host = hba->host; hba->ufshcd_state = UFSHCD_STATE_RESET; @@ -8326,6 +8332,14 @@ static int ufshcd_device_init(struct ufs_hba *hba, bool init_dev_params) ret = ufshcd_device_params_init(hba); if (ret) return ret; + if (is_mcq_supported(hba) && !hba->scsi_host_added) { + ret = scsi_add_host(host, hba->dev); + if (ret) { + dev_err(hba->dev, "scsi_add_host failed\n"); + return ret; + } + hba->scsi_host_added = true; + } } ufshcd_tune_unipro_params(hba); @@ -9964,10 +9978,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) { diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h index 514687d..a343bd4 100644 --- a/include/ufs/ufshcd.h +++ b/include/ufs/ufshcd.h @@ -996,6 +996,7 @@ struct ufs_hba { u32 luns_avail; bool complete_put; bool ext_iid_sup; + bool scsi_host_added; bool mcq_sup; }; -- 2.7.4