mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
FROMGIT: scsi: ufs: Set the CP flag for RT requests
Make the UFS device execute realtime (RT) requests before other requests. This will be used in Android to reduce the I/O latency of the foreground app. Change-Id: Ia8fa42517e6f8e11439bd91b2e23762c00845724 Signed-off-by: Bart Van Assche <bvanassche@acm.org> (cherry picked from commit 00d2fa28da0aa371ad215e92ebf5297c0e7d4861 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next) Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Bart Van Assche
parent
67d3336282
commit
bfeb57ae95
@@ -2780,6 +2780,8 @@ static int ufshcd_compose_devman_upiu(struct ufs_hba *hba,
|
|||||||
*/
|
*/
|
||||||
static void ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
|
static void ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
|
||||||
{
|
{
|
||||||
|
struct request *rq = scsi_cmd_to_rq(lrbp->cmd);
|
||||||
|
unsigned int ioprio_class = IOPRIO_PRIO_CLASS(req_get_ioprio(rq));
|
||||||
u8 upiu_flags;
|
u8 upiu_flags;
|
||||||
|
|
||||||
if (hba->ufs_version <= ufshci_version(1, 1))
|
if (hba->ufs_version <= ufshci_version(1, 1))
|
||||||
@@ -2789,6 +2791,8 @@ static void ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
|
|||||||
|
|
||||||
ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
|
ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
|
||||||
lrbp->cmd->sc_data_direction, 0);
|
lrbp->cmd->sc_data_direction, 0);
|
||||||
|
if (ioprio_class == IOPRIO_CLASS_RT)
|
||||||
|
upiu_flags |= UPIU_CMD_FLAGS_CP;
|
||||||
ufshcd_prepare_utp_scsi_cmd_upiu(lrbp, upiu_flags);
|
ufshcd_prepare_utp_scsi_cmd_upiu(lrbp, upiu_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,9 +97,10 @@ enum {
|
|||||||
UPIU_TRANSACTION_REJECT_UPIU = 0x3F,
|
UPIU_TRANSACTION_REJECT_UPIU = 0x3F,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* UPIU Read/Write flags */
|
/* UPIU Read/Write flags. See also table "UPIU Flags" in the UFS standard. */
|
||||||
enum {
|
enum {
|
||||||
UPIU_CMD_FLAGS_NONE = 0x00,
|
UPIU_CMD_FLAGS_NONE = 0x00,
|
||||||
|
UPIU_CMD_FLAGS_CP = 0x04,
|
||||||
UPIU_CMD_FLAGS_WRITE = 0x20,
|
UPIU_CMD_FLAGS_WRITE = 0x20,
|
||||||
UPIU_CMD_FLAGS_READ = 0x40,
|
UPIU_CMD_FLAGS_READ = 0x40,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user