RE: RE: [PATCH v21 3/4] scsi: ufs: Prepare HPB read for cached sub-region

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> +static u64 ufshpb_get_ppn(struct ufshpb_lu *hpb,
> > +                         struct ufshpb_map_ctx *mctx, int pos, int *error)
> > +{
> > +       u64 *ppn_table;
> > +       struct page *page;
> > +       int index, offset;
> > +
> > +       index = pos / (PAGE_SIZE / HPB_ENTRY_SIZE);
> > +       offset = pos % (PAGE_SIZE / HPB_ENTRY_SIZE);
> > +
> > +       page = mctx->m_page[index];
> > +       if (unlikely(!page)) {
> > +               *error = -ENOMEM;
> > +               dev_err(&hpb->sdev_ufs_lu->sdev_dev,
> > +                       "error. cannot find page in mctx\n");
> > +               return 0;
> > +       }
> > +
> > +       ppn_table = page_address(page);
> > +       if (unlikely(!ppn_table)) {
> > +               *error = -ENOMEM;
> > +               dev_err(&hpb->sdev_ufs_lu->sdev_dev,
> > +                       "error. cannot get ppn_table\n");
> > +               return 0;
> > +       }
> > +
> > +       return ppn_table[offset];
> How about memcpy here as well?
> This way it is clear that the host is not manipulating the physical addresses in any way,
> And you won't need to invent the new ufshpb_fill_ppn_from_page.
>  
I changed the code to use ufshpb_fill_ppn_from_page() because it is more
genenal for use than ufshpb_get_ppn(). And I fixed to use memcpy for
setting cdb of HPB read.

Thanks,
Daejun



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux