Thread (33 messages) 33 messages, 3 authors, 2021-02-25

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

From: Avri Altman <Avri.Altman@wdc.com>
Date: 2021-02-23 13:50:31
Also in: lkml

+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;
+}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help