RE: [RFC PATCH 5/5] scsi: ufs: Prepare HPB read for cached sub-region

From: Avri Altman
Date: Sat Jun 06 2020 - 14:39:02 EST



> +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