lkml.org 
[lkml]   [2021]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [PATCH v22 3/4] scsi: ufs: Prepare HPB read for cached sub-region
    Date

    > +static int ufshpb_fill_ppn_from_page(struct ufshpb_lu *hpb,
    > + struct ufshpb_map_ctx *mctx, int pos,
    > + int len, u64 *ppn_buf)
    > +{
    > + struct page *page;
    > + int index, offset;
    > + int copied;
    > +
    > + index = pos / (PAGE_SIZE / HPB_ENTRY_SIZE);
    > + offset = pos % (PAGE_SIZE / HPB_ENTRY_SIZE);
    Maybe cache hpb->entries_per_page in ufshpb_lu_parameter_init as well?

    > +
    > + if ((offset + len) <= (PAGE_SIZE / HPB_ENTRY_SIZE))
    > + copied = len;
    > + else
    > + copied = (PAGE_SIZE / HPB_ENTRY_SIZE) - offset;
    > +
    > + page = mctx->m_page[index];
    > + if (unlikely(!page)) {
    > + dev_err(&hpb->sdev_ufs_lu->sdev_dev,
    > + "error. cannot find page in mctx\n");
    > + return -ENOMEM;
    > + }
    > +
    > + memcpy(ppn_buf, page_address(page) + (offset * HPB_ENTRY_SIZE),
    > + copied * HPB_ENTRY_SIZE);
    > +
    > + return copied;
    > +}
    \
     
     \ /
      Last update: 2021-02-23 14:52    [W:5.021 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site