> 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. Maybe one more sentence, explaining that ufs CP is agnostic to scsi CDL, And can be implemented regardless. Thanks, Avri > > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > drivers/ufs/core/ufshcd.c | 4 ++++ > include/ufs/ufs.h | 3 ++- > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index c69bf532c4ab..54c3811d5534 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -2717,6 +2717,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) > { > + struct request *rq = scsi_cmd_to_rq(lrbp->cmd); > + unsigned int ioprio_class = IOPRIO_PRIO_CLASS(req_get_ioprio(rq)); > u8 upiu_flags; > > if (hba->ufs_version <= ufshci_version(1, 1)) > @@ -2726,6 +2728,8 @@ static void ufshcd_comp_scsi_upiu(struct ufs_hba > *hba, struct ufshcd_lrb *lrbp) > > ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, > 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); > } > > diff --git a/include/ufs/ufs.h b/include/ufs/ufs.h > index 0cced88f4531..e77ab1786856 100644 > --- a/include/ufs/ufs.h > +++ b/include/ufs/ufs.h > @@ -98,9 +98,10 @@ enum upiu_response_transaction { > UPIU_TRANSACTION_REJECT_UPIU = 0x3F, > }; > > -/* UPIU Read/Write flags */ > +/* UPIU Read/Write flags. See also table "UPIU Flags" in the UFS standard. > */ > enum { > UPIU_CMD_FLAGS_NONE = 0x00, > + UPIU_CMD_FLAGS_CP = 0x04, > UPIU_CMD_FLAGS_WRITE = 0x20, > UPIU_CMD_FLAGS_READ = 0x40, > };