> +static bool ufshpb_test_ppn_dirty(struct ufshpb_lu *hpb, int rgn_idx,
> +                                  int srgn_idx, int srgn_offset, int cnt)


> +
> +       for (i = 0; i < bit_len; i++) {
> +               if (test_bit(srgn_offset + i, srgn->mctx->ppn_dirty))
Maybe use a mask or hweight instead of testing bit by bit?

> +static void
> +ufshpb_set_hpb_read_to_upiu(struct ufshpb_lu *hpb, struct ufshcd_lrb
> *lrbp,
> +                                 u32 lpn, u64 ppn,  unsigned int 
> transfer_len)
> +{
> +       unsigned char *cdb = lrbp->ucd_req_ptr->sc.cdb;
> +
> +       cdb[0] = UFSHPB_READ;
> +
> +       put_unaligned_be32(lpn, &cdb[2]);
Is this needed? The lba is already occupying bytes 2..5

> +       put_unaligned_be64(ppn, &cdb[6]);
> +       cdb[14] = transfer_len;
> +}
> +

Thanks,
Avri

Reply via email to