From: Asutosh Das <quic_asutoshd@quicinc.com>
To: <quic_cang@quicinc.com>, <martin.petersen@oracle.com>,
<linux-scsi@vger.kernel.org>
Cc: <quic_nguyenb@quicinc.com>, <quic_xiaosenh@quicinc.com>,
<stanley.chu@mediatek.com>, <adrian.hunter@intel.com>,
<bvanassche@acm.org>, <avri.altman@wdc.com>, <mani@kernel.org>,
<beanhuo@micron.com>, Asutosh Das <quic_asutoshd@quicinc.com>,
<linux-arm-msm@vger.kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
"James E.J. Bottomley" <jejb@linux.ibm.com>,
Jinyoung Choi <j-young.choi@samsung.com>,
open list <linux-kernel@vger.kernel.org>
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 [thread overview]
Message-ID: <beadf5c0e71976f976e680770961f1aac999e86e.1673557949.git.quic_asutoshd@quicinc.com> (raw)
In-Reply-To: <cover.1673557949.git.quic_asutoshd@quicinc.com>
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 <quic_cang@quicinc.com>
Signed-off-by: Can Guo <quic_cang@quicinc.com>
Signed-off-by: Asutosh Das <quic_asutoshd@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
---
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
next prev parent reply other threads:[~2023-01-13 20:50 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-13 20:48 [PATCH v13 00/15] Add Multi Circular Queue Support Asutosh Das
2023-01-13 20:48 ` [PATCH v13 01/15] ufs: core: Probe for ext_iid support Asutosh Das
2023-01-13 20:48 ` [PATCH v13 02/15] ufs: core: Introduce Multi-circular queue capability Asutosh Das
2023-01-13 20:48 ` Asutosh Das [this message]
2023-01-13 20:48 ` [PATCH v13 04/15] ufs: core: mcq: Add support to allocate multiple queues Asutosh Das
2023-01-13 20:48 ` [PATCH v13 05/15] ufs: core: mcq: Configure resource regions Asutosh Das
2023-01-13 20:48 ` [PATCH v13 06/15] ufs: core: mcq: Calculate queue depth Asutosh Das
2023-01-13 20:48 ` [PATCH v13 07/15] ufs: core: mcq: Allocate memory for mcq mode Asutosh Das
2023-01-13 20:48 ` [PATCH v13 08/15] ufs: core: mcq: Configure operation and runtime interface Asutosh Das
2023-01-13 20:48 ` [PATCH v13 09/15] ufs: core: mcq: Use shared tags for MCQ mode Asutosh Das
2023-01-13 20:48 ` [PATCH v13 10/15] ufs: core: Prepare ufshcd_send_command for mcq Asutosh Das
2023-01-13 20:48 ` [PATCH v13 11/15] ufs: core: mcq: Find hardware queue to queue request Asutosh Das
2023-01-13 20:48 ` [PATCH v13 12/15] ufs: core: Prepare for completion in mcq Asutosh Das
2023-01-13 20:48 ` [PATCH v13 13/15] ufs: mcq: Add completion support of a cqe Asutosh Das
2023-01-13 20:48 ` [PATCH v13 14/15] ufs: core: mcq: Add completion support in poll Asutosh Das
2023-01-13 20:48 ` [PATCH v13 15/15] ufs: core: mcq: Enable Multi Circular Queue Asutosh Das
2023-01-14 2:16 ` [PATCH v13 00/15] Add Multi Circular Queue Support Martin K. Petersen
2023-01-19 0:44 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=beadf5c0e71976f976e680770961f1aac999e86e.1673557949.git.quic_asutoshd@quicinc.com \
--to=quic_asutoshd@quicinc.com \
--cc=adrian.hunter@intel.com \
--cc=alim.akhtar@samsung.com \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=bvanassche@acm.org \
--cc=j-young.choi@samsung.com \
--cc=jejb@linux.ibm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mani@kernel.org \
--cc=martin.petersen@oracle.com \
--cc=quic_cang@quicinc.com \
--cc=quic_nguyenb@quicinc.com \
--cc=quic_xiaosenh@quicinc.com \
--cc=stanley.chu@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).