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