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:0.263 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site