From: Avri Altman <avri.altman@wdc.com>
To: "James E . J . Bottomley" <jejb@linux.vnet.ibm.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: gregkh@linuxfoundation.org, Bart Van Assche <bvanassche@acm.org>,
yongmyung lee <ymhungry.lee@samsung.com>,
Daejun Park <daejun7.park@samsung.com>,
alim.akhtar@samsung.com, asutoshd@codeaurora.org,
Zang Leigang <zangleigang@hisilicon.com>,
Avi Shchislowski <avi.shchislowski@wdc.com>,
Bean Huo <beanhuo@micron.com>,
cang@codeaurora.org, stanley.chu@mediatek.com,
Avri Altman <avri.altman@wdc.com>
Subject: [PATCH v6 08/10] scsi: ufshpb: Limit the number of inflight map requests
Date: Mon, 22 Mar 2021 10:10:42 +0200 [thread overview]
Message-ID: <20210322081044.62003-9-avri.altman@wdc.com> (raw)
In-Reply-To: <20210322081044.62003-1-avri.altman@wdc.com>
In host control mode the host is the originator of map requests. To not
flood the device with map requests, use a simple throttling mechanism
that limits the number of inflight map requests.
Signed-off-by: Avri Altman <avri.altman@wdc.com>
---
drivers/scsi/ufs/ufshpb.c | 11 +++++++++++
drivers/scsi/ufs/ufshpb.h | 1 +
2 files changed, 12 insertions(+)
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c
index 4639d3b5ddc0..f755f5a7775c 100644
--- a/drivers/scsi/ufs/ufshpb.c
+++ b/drivers/scsi/ufs/ufshpb.c
@@ -21,6 +21,7 @@
#define READ_TO_MS 1000
#define READ_TO_EXPIRIES 100
#define POLLING_INTERVAL_MS 200
+#define THROTTLE_MAP_REQ_DEFAULT 1
/* memory management */
static struct kmem_cache *ufshpb_mctx_cache;
@@ -747,6 +748,14 @@ static struct ufshpb_req *ufshpb_get_map_req(struct ufshpb_lu *hpb,
struct ufshpb_req *map_req;
struct bio *bio;
+ if (hpb->is_hcm &&
+ hpb->num_inflight_map_req >= THROTTLE_MAP_REQ_DEFAULT) {
+ dev_info(&hpb->sdev_ufs_lu->sdev_dev,
+ "map_req throttle. inflight %d throttle %d",
+ hpb->num_inflight_map_req, THROTTLE_MAP_REQ_DEFAULT);
+ return NULL;
+ }
+
map_req = ufshpb_get_req(hpb, srgn->rgn_idx, REQ_OP_SCSI_IN, false);
if (!map_req)
return NULL;
@@ -761,6 +770,7 @@ static struct ufshpb_req *ufshpb_get_map_req(struct ufshpb_lu *hpb,
map_req->rb.srgn_idx = srgn->srgn_idx;
map_req->rb.mctx = srgn->mctx;
+ hpb->num_inflight_map_req++;
return map_req;
}
@@ -770,6 +780,7 @@ static void ufshpb_put_map_req(struct ufshpb_lu *hpb,
{
bio_put(map_req->bio);
ufshpb_put_req(hpb, map_req);
+ hpb->num_inflight_map_req--;
}
static int ufshpb_clear_dirty_bitmap(struct ufshpb_lu *hpb,
diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h
index c2821504a2d8..c9b8ee540704 100644
--- a/drivers/scsi/ufs/ufshpb.h
+++ b/drivers/scsi/ufs/ufshpb.h
@@ -213,6 +213,7 @@ struct ufshpb_lu {
struct ufshpb_req *pre_req;
int num_inflight_pre_req;
int throttle_pre_req;
+ int num_inflight_map_req;
struct list_head lh_pre_req_free;
int cur_read_id;
int pre_req_min_tr_len;
--
2.25.1
next prev parent reply other threads:[~2021-03-22 8:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-22 8:10 [PATCH v6 00/10] Add Host control mode to HPB Avri Altman
2021-03-22 8:10 ` [PATCH v6 01/10] scsi: ufshpb: Cache HPB Control mode on init Avri Altman
2021-03-22 8:10 ` [PATCH v6 02/10] scsi: ufshpb: Add host control mode support to rsp_upiu Avri Altman
2021-03-24 3:31 ` Zang Leigang
2021-03-24 3:59 ` Can Guo
2021-03-24 12:44 ` Avri Altman
2021-03-22 8:10 ` [PATCH v6 03/10] scsi: ufshpb: Add region's reads counter Avri Altman
2021-03-24 9:25 ` Can Guo
2021-03-24 11:28 ` Avri Altman
2021-03-27 8:02 ` Avri Altman
2021-03-22 8:10 ` [PATCH v6 04/10] scsi: ufshpb: Make eviction depends on region's reads Avri Altman
2021-03-25 5:34 ` Can Guo
2021-03-25 5:56 ` Avri Altman
2021-03-22 8:10 ` [PATCH v6 05/10] scsi: ufshpb: Region inactivation in host mode Avri Altman
2021-03-22 8:10 ` [PATCH v6 06/10] scsi: ufshpb: Add hpb dev reset response Avri Altman
2021-03-22 8:10 ` [PATCH v6 07/10] scsi: ufshpb: Add "Cold" regions timer Avri Altman
2021-03-22 8:10 ` Avri Altman [this message]
2021-03-22 8:10 ` [PATCH v6 09/10] scsi: ufshpb: Add support for host control mode Avri Altman
2021-03-22 8:10 ` [PATCH v6 10/10] scsi: ufshpb: Make host mode parameters configurable Avri Altman
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=20210322081044.62003-9-avri.altman@wdc.com \
--to=avri.altman@wdc.com \
--cc=alim.akhtar@samsung.com \
--cc=asutoshd@codeaurora.org \
--cc=avi.shchislowski@wdc.com \
--cc=beanhuo@micron.com \
--cc=bvanassche@acm.org \
--cc=cang@codeaurora.org \
--cc=daejun7.park@samsung.com \
--cc=gregkh@linuxfoundation.org \
--cc=jejb@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=stanley.chu@mediatek.com \
--cc=ymhungry.lee@samsung.com \
--cc=zangleigang@hisilicon.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
all inboxes | Powered by JetHome®