> > > Some SoC specific might need command history for > various reasons, such as stacking command contexts > in system memory to check for debugging in the future > or scaling some DVFS knobs to boost IO throughput. > > What you would do with the information could be > variant per SoC vendor. > > Signed-off-by: Kiwoong Kim <kwmad.kim@xxxxxxxxxxx> > --- > drivers/scsi/ufs/ufshcd.c | 2 ++ > drivers/scsi/ufs/ufshcd.h | 8 ++++++++ > 2 files changed, 10 insertions(+) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 52abe82..3326236 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -4882,6 +4882,7 @@ static void __ufshcd_transfer_req_compl(struct > ufs_hba *hba, > for_each_set_bit(index, &completed_reqs, hba->nutrs) { > lrbp = &hba->lrb[index]; > cmd = lrbp->cmd; > + ufshcd_vops_compl_xfer_req(hba, index, (cmd) ? true : false); > if (cmd) { > ufshcd_add_command_trace(hba, index, "complete"); > result = ufshcd_transfer_rsp_status(hba, lrbp); > @@ -4890,6 +4891,7 @@ static void __ufshcd_transfer_req_compl(struct > ufs_hba *hba, > /* Mark completed command as NULL in LRB */ > lrbp->cmd = NULL; > lrbp->compl_time_stamp = ktime_get(); > + > /* Do not touch lrbp after scsi done */ > cmd->scsi_done(cmd); > __ufshcd_release(hba); > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h > index c774012..5cf9f99 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -307,6 +307,7 @@ struct ufs_hba_variant_ops { > void (*config_scaling_param)(struct ufs_hba *hba, > struct devfreq_dev_profile *profile, > void *data); > + void (*compl_xfer_req)(struct ufs_hba *hba, int tag, bool is_scsi); Maybe add it right after setup_xfer_req? Makes more sense as it is its counterpart. Thanks, Avri > };