diff options
author | Mike Marciniszyn <mike.marciniszyn@intel.com> | 2015-07-21 08:36:07 -0400 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2015-08-28 22:54:46 -0400 |
commit | d6f1c17e162b2a11e708f28fa93f2f79c164b442 (patch) | |
tree | aa1a64585e9a27ae91aeb8ae229ac4636162d297 /drivers/infiniband/hw/qib/qib_verbs.h | |
parent | e0238a6a369eaa2e41b2c0321453272fb859f618 (diff) | |
download | linux-next-d6f1c17e162b2a11e708f28fa93f2f79c164b442.tar.gz |
IB/qib: Change lkey table allocation to support more MRs
The lkey table is allocated with with a get_user_pages() with an
order based on a number of index bits from a module parameter.
The underlying kernel code cannot allocate that many contiguous pages.
There is no reason the underlying memory needs to be physically
contiguous.
This patch:
- switches the allocation/deallocation to vmalloc/vfree
- caps the number of bits to 23 to insure at least 1 generation bit
o this matches the module parameter description
Cc: stable@vger.kernel.org
Reviewed-by: Vinit Agnihotri <vinit.abhay.agnihotri@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_verbs.h')
-rw-r--r-- | drivers/infiniband/hw/qib/qib_verbs.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/qib/qib_verbs.h b/drivers/infiniband/hw/qib/qib_verbs.h index 1635572752ce..bce0fa596b4d 100644 --- a/drivers/infiniband/hw/qib/qib_verbs.h +++ b/drivers/infiniband/hw/qib/qib_verbs.h @@ -647,6 +647,8 @@ struct qib_qpn_table { struct qpn_map map[QPNMAP_ENTRIES]; }; +#define MAX_LKEY_TABLE_BITS 23 + struct qib_lkey_table { spinlock_t lock; /* protect changes in this struct */ u32 next; /* next unused index (speeds search) */ |