RE: RE: [PATCH v24 4/4] scsi: ufs: Add HPB 2.0 support
From: Daejun Park
Date: Wed Feb 24 2021 - 22:26:35 EST
>
>
>
> > +static int ufshpb_issue_umap_all_req(struct ufshpb_lu *hpb)
>
> Maybe ufshpb_issue_umap_all_req is just a wrapper for
>
> ufshpb_issue_umap_req?
>
> e.g it calls ufshpb_issue_umap_req(hpb, int read_buferr_id = 0x3) ?
>
> Then on host mode inactivation:
>
> static int ufshpb_issue_umap_single_req(struct ufshpb_lu *hpb)
>
> {
>
> return ufshpb_issue_umap_req(hpb, 0x1);
>
> }
>
Better yet, ufshpb_execute_umap_req can get *rgn as an extra argument.
>
ufshpb_issue_umap_all_req will call it with NULL, while
>
ufshpb_issue_umap_single_req will call it with the rgn to inactivate.
>
>
Then, ufshpb_set_unmap_cmd takes the form:
>
static void ufshpb_set_unmap_cmd(unsigned char *cdb, struct ufshpb_region *rgn)
>
{
>
cdb[0] = UFSHPB_WRITE_BUFFER;
>
>
if (rgn) {
>
cdb[1] = UFSHPB_WRITE_BUFFER_INACT_SINGLE_ID;
>
put_unaligned_be16(rgn->rgn_idx, &cdb[2]);
>
} else {
>
cdb[1] = UFSHPB_WRITE_BUFFER_INACT_ALL_ID;
>
}
>
>
cdb[9] = 0x00;
>
}
>
>
Does it make sense?
I got it.
Thanks,
Daejun