iwmr 1310 drivers/infiniband/hw/i40iw/i40iw_verbs.c static void i40iw_copy_user_pgaddrs(struct i40iw_mr *iwmr, iwmr 1314 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct ib_umem *region = iwmr->region; iwmr 1315 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1323 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwmr->type == IW_MEMREG_TYPE_QP) iwmr 1327 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_size) { iwmr 1392 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr, iwmr 1395 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1404 drivers/infiniband/hw/i40iw/i40iw_verbs.c status = i40iw_get_pble(&iwdev->sc_dev, iwdev->pble_rsrc, palloc, iwmr->page_cnt); iwmr 1414 drivers/infiniband/hw/i40iw/i40iw_verbs.c pbl = iwmr->pgaddrmem; iwmr 1417 drivers/infiniband/hw/i40iw/i40iw_verbs.c i40iw_copy_user_pgaddrs(iwmr, pbl, level); iwmr 1420 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->pgaddrmem[0] = *pbl; iwmr 1438 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr = iwpbl->iwmr; iwmr 1442 drivers/infiniband/hw/i40iw/i40iw_verbs.c u64 *arr = iwmr->pgaddrmem; iwmr 1449 drivers/infiniband/hw/i40iw/i40iw_verbs.c pg_size = iwmr->page_size; iwmr 1451 drivers/infiniband/hw/i40iw/i40iw_verbs.c err = i40iw_setup_pbles(iwdev, iwmr, use_pbles); iwmr 1464 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwmr->type == IW_MEMREG_TYPE_QP) { iwmr 1509 drivers/infiniband/hw/i40iw/i40iw_verbs.c static int i40iw_hw_alloc_stag(struct i40iw_device *iwdev, struct i40iw_mr *iwmr) iwmr 1512 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pd *iwpd = to_iwpd(iwmr->ibmr.pd); iwmr 1526 drivers/infiniband/hw/i40iw/i40iw_verbs.c info->stag_idx = iwmr->stag >> I40IW_CQPSQ_STAG_IDX_SHIFT; iwmr 1528 drivers/infiniband/hw/i40iw/i40iw_verbs.c info->total_len = iwmr->length; iwmr 1557 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr; iwmr 1562 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL); iwmr 1563 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (!iwmr) iwmr 1572 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->stag = stag; iwmr 1573 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.rkey = stag; iwmr 1574 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.lkey = stag; iwmr 1575 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.pd = pd; iwmr 1576 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.device = pd->device; iwmr 1577 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl = &iwmr->iwpbl; iwmr 1578 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl->iwmr = iwmr; iwmr 1579 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->type = IW_MEMREG_TYPE_MEM; iwmr 1581 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_cnt = max_num_sg; iwmr 1583 drivers/infiniband/hw/i40iw/i40iw_verbs.c status = i40iw_get_pble(&iwdev->sc_dev, iwdev->pble_rsrc, palloc, iwmr->page_cnt); iwmr 1590 drivers/infiniband/hw/i40iw/i40iw_verbs.c err_code = i40iw_hw_alloc_stag(iwdev, iwmr); iwmr 1595 drivers/infiniband/hw/i40iw/i40iw_verbs.c return &iwmr->ibmr; iwmr 1601 drivers/infiniband/hw/i40iw/i40iw_verbs.c kfree(iwmr); iwmr 1612 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr = to_iwmr(ibmr); iwmr 1613 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1617 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (unlikely(iwmr->npages == iwmr->page_cnt)) iwmr 1621 drivers/infiniband/hw/i40iw/i40iw_verbs.c pbl[iwmr->npages++] = cpu_to_le64(addr); iwmr 1634 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr = to_iwmr(ibmr); iwmr 1636 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->npages = 0; iwmr 1673 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr, iwmr 1676 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1678 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pd *iwpd = to_iwpd(iwmr->ibmr.pd); iwmr 1693 drivers/infiniband/hw/i40iw/i40iw_verbs.c stag_info->stag_idx = iwmr->stag >> I40IW_CQPSQ_STAG_IDX_SHIFT; iwmr 1694 drivers/infiniband/hw/i40iw/i40iw_verbs.c stag_info->stag_key = (u8)iwmr->stag; iwmr 1695 drivers/infiniband/hw/i40iw/i40iw_verbs.c stag_info->total_len = iwmr->length; iwmr 1699 drivers/infiniband/hw/i40iw/i40iw_verbs.c stag_info->page_size = iwmr->page_size; iwmr 1710 drivers/infiniband/hw/i40iw/i40iw_verbs.c stag_info->reg_addr_pa = iwmr->pgaddrmem[0]; iwmr 1748 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr; iwmr 1775 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL); iwmr 1776 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (!iwmr) { iwmr 1781 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl = &iwmr->iwpbl; iwmr 1782 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl->iwmr = iwmr; iwmr 1783 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->region = region; iwmr 1784 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.pd = pd; iwmr 1785 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.device = pd->device; iwmr 1787 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_size = PAGE_SIZE; iwmr 1789 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_size = ib_umem_find_best_pgsz(region, SZ_4K | SZ_2M, iwmr 1792 drivers/infiniband/hw/i40iw/i40iw_verbs.c region_length = region->length + (start & (iwmr->page_size - 1)); iwmr 1793 drivers/infiniband/hw/i40iw/i40iw_verbs.c pg_shift = ffs(iwmr->page_size) - 1; iwmr 1795 drivers/infiniband/hw/i40iw/i40iw_verbs.c pbl_depth += (region_length & (iwmr->page_size - 1)) ? 1 : 0; iwmr 1796 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->length = region->length; iwmr 1801 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->type = req.reg_type; iwmr 1802 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_cnt = (u32)pbl_depth; iwmr 1827 drivers/infiniband/hw/i40iw/i40iw_verbs.c use_pbles = (iwmr->page_cnt != 1); iwmr 1830 drivers/infiniband/hw/i40iw/i40iw_verbs.c err = i40iw_setup_pbles(iwdev, iwmr, use_pbles); iwmr 1835 drivers/infiniband/hw/i40iw/i40iw_verbs.c ret = i40iw_check_mr_contiguous(palloc, iwmr->page_size); iwmr 1849 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->stag = stag; iwmr 1850 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.rkey = stag; iwmr 1851 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.lkey = stag; iwmr 1853 drivers/infiniband/hw/i40iw/i40iw_verbs.c err = i40iw_hwreg_mr(iwdev, iwmr, access); iwmr 1864 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->type = req.reg_type; iwmr 1867 drivers/infiniband/hw/i40iw/i40iw_verbs.c return &iwmr->ibmr; iwmr 1873 drivers/infiniband/hw/i40iw/i40iw_verbs.c kfree(iwmr); iwmr 1894 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr; iwmr 1900 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr = kzalloc(sizeof(*iwmr), GFP_KERNEL); iwmr 1901 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (!iwmr) iwmr 1903 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.pd = pd; iwmr 1904 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.device = pd->device; iwmr 1905 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl = &iwmr->iwpbl; iwmr 1906 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwpbl->iwmr = iwmr; iwmr 1907 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->type = IW_MEMREG_TYPE_MEM; iwmr 1915 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->stag = stag; iwmr 1916 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.rkey = stag; iwmr 1917 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->ibmr.lkey = stag; iwmr 1918 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->page_cnt = 1; iwmr 1919 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->pgaddrmem[0] = addr; iwmr 1920 drivers/infiniband/hw/i40iw/i40iw_verbs.c iwmr->length = size; iwmr 1921 drivers/infiniband/hw/i40iw/i40iw_verbs.c status = i40iw_hwreg_mr(iwdev, iwmr, access); iwmr 1929 drivers/infiniband/hw/i40iw/i40iw_verbs.c return &iwmr->ibmr; iwmr 1931 drivers/infiniband/hw/i40iw/i40iw_verbs.c kfree(iwmr); iwmr 1952 drivers/infiniband/hw/i40iw/i40iw_verbs.c static void i40iw_del_memlist(struct i40iw_mr *iwmr, iwmr 1955 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1958 drivers/infiniband/hw/i40iw/i40iw_verbs.c switch (iwmr->type) { iwmr 1988 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr = to_iwmr(ib_mr); iwmr 1992 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pbl *iwpbl = &iwmr->iwpbl; iwmr 1998 drivers/infiniband/hw/i40iw/i40iw_verbs.c ib_umem_release(iwmr->region); iwmr 2000 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwmr->type != IW_MEMREG_TYPE_MEM) { iwmr 2002 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwmr->region) { iwmr 2009 drivers/infiniband/hw/i40iw/i40iw_verbs.c i40iw_del_memlist(iwmr, ucontext); iwmr 2011 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwpbl->pbl_allocated && iwmr->type != IW_MEMREG_TYPE_QP) iwmr 2013 drivers/infiniband/hw/i40iw/i40iw_verbs.c kfree(iwmr); iwmr 2040 drivers/infiniband/hw/i40iw/i40iw_verbs.c i40iw_free_stag(iwdev, iwmr->stag); iwmr 2043 drivers/infiniband/hw/i40iw/i40iw_verbs.c kfree(iwmr); iwmr 2234 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_mr *iwmr = to_iwmr(reg_wr(ib_wr)->mr); iwmr 2236 drivers/infiniband/hw/i40iw/i40iw_verbs.c struct i40iw_pble_alloc *palloc = &iwmr->iwpbl.pble_alloc; iwmr 2249 drivers/infiniband/hw/i40iw/i40iw_verbs.c info.va = (void *)(uintptr_t)iwmr->ibmr.iova; iwmr 2250 drivers/infiniband/hw/i40iw/i40iw_verbs.c info.total_len = iwmr->ibmr.length; iwmr 2256 drivers/infiniband/hw/i40iw/i40iw_verbs.c if (iwmr->npages > I40IW_MIN_PAGES_PER_FMR) iwmr 84 drivers/infiniband/hw/i40iw/i40iw_verbs.h struct i40iw_mr *iwmr;