diff options
author | Artemy Kovalyov <artemyko@mellanox.com> | 2017-04-05 09:23:56 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-04-25 22:40:28 +0300 |
commit | b2ac91885b9f137fd7ed35593a72bcee9e049ba8 (patch) | |
tree | c4a6d87a9cfceb0b10c0fc6a55e4b99bdd9160a7 /drivers/infiniband/hw/mlx5/mem.c | |
parent | 403cd12e2cf759ead5cbdcb62bf9872b9618d400 (diff) | |
download | linux-b2ac91885b9f137fd7ed35593a72bcee9e049ba8.tar.xz |
IB/mlx5: Add contiguous ODP support
Currenlty ODP supports only regular MMU pages.
Add ODP support for regions consisting of physically contiguous chunks
of arbitrary order (huge pages for instance) to improve performance.
Signed-off-by: Artemy Kovalyov <artemyko@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx5/mem.c')
-rw-r--r-- | drivers/infiniband/hw/mlx5/mem.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/infiniband/hw/mlx5/mem.c b/drivers/infiniband/hw/mlx5/mem.c index a0c2af964249..914f212e7ef6 100644 --- a/drivers/infiniband/hw/mlx5/mem.c +++ b/drivers/infiniband/hw/mlx5/mem.c @@ -61,13 +61,12 @@ void mlx5_ib_cont_pages(struct ib_umem *umem, u64 addr, int entry; unsigned long page_shift = umem->page_shift; - /* With ODP we must always match OS page size. */ if (umem->odp_data) { - *count = ib_umem_page_count(umem); - *shift = PAGE_SHIFT; - *ncont = *count; + *ncont = ib_umem_page_count(umem); + *count = *ncont << (page_shift - PAGE_SHIFT); + *shift = page_shift; if (order) - *order = ilog2(roundup_pow_of_two(*count)); + *order = ilog2(roundup_pow_of_two(*ncont)); return; } |