linux/drivers/infiniband/hw/cxgb3
Roland Dreier 273748cc90 RDMA/cxgb3: Fix severe limit on userspace memory registration size
Currently, iw_cxgb3 is severely limited on the amount of userspace
memory that can be registered in in a single memory region, which
causes big problems for applications that expect to be able to
register 100s of MB.

The problem is that the driver uses a single kmalloc()ed buffer to
hold the physical buffer list (PBL) for the entire memory region
during registration, which means that 8 bytes of contiguous memory are
required for each page of memory being registered.  For example, a 64
MB registration will require 128 KB of contiguous memory with 4 KB
pages, and it unlikely that such an allocation will succeed on a busy
system.

This is purely a driver problem: the temporary page list buffer is not
needed by the hardware, so we can fix this by writing the PBL to the
hardware in page-sized chunks rather than all at once.  We do this by
splitting the memory registration operation up into several steps:

 - Allocate PBL space in adapter memory for the full registration
 - Copy PBL to adapter memory in chunks
 - Allocate STag and enable memory region

This also allows several other cleanups to the __cxio_tpt_op()
interface and related parts of the driver.

This change leaves the reregister memory region and memory window
operations broken, but they already didn't work due to other
longstanding bugs, so fixing them will be left to a later patch.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-05-06 15:56:22 -07:00
..
cxio_dbg.c IB: Replace remaining __FUNCTION__ occurrences with __func__ 2008-04-16 21:01:10 -07:00
cxio_hal.c RDMA/cxgb3: Fix severe limit on userspace memory registration size 2008-05-06 15:56:22 -07:00
cxio_hal.h RDMA/cxgb3: Fix severe limit on userspace memory registration size 2008-05-06 15:56:22 -07:00
cxio_resource.c RDMA/cxgb3: Don't add PBL memory to gen_pool in chunks 2008-05-06 15:03:38 -07:00
cxio_resource.h RDMA/cxgb3: Remove Open Grid Computing copyrights in iw_cxgb3 driver 2007-02-16 13:57:35 -08:00
cxio_wr.h RDMA/cxgb3: Support peer-2-peer connection setup 2008-04-29 13:46:52 -07:00
iwch_cm.c RDMA/cxgb3: Bump up the MPA connection setup timeout. 2008-05-02 10:57:09 -07:00
iwch_cm.h RDMA/cxgb3: Support peer-2-peer connection setup 2008-04-29 13:46:52 -07:00
iwch_cq.c IB: Replace remaining __FUNCTION__ occurrences with __func__ 2008-04-16 21:01:10 -07:00
iwch_ev.c IB: Replace remaining __FUNCTION__ occurrences with __func__ 2008-04-16 21:01:10 -07:00
iwch_mem.c RDMA/cxgb3: Fix severe limit on userspace memory registration size 2008-05-06 15:56:22 -07:00
iwch_provider.c RDMA/cxgb3: Fix severe limit on userspace memory registration size 2008-05-06 15:56:22 -07:00
iwch_provider.h RDMA/cxgb3: Fix severe limit on userspace memory registration size 2008-05-06 15:56:22 -07:00
iwch_qp.c RDMA/cxgb3: QP flush fixes 2008-05-02 10:56:57 -07:00
iwch_user.h RDMA/cxgb3: Remove Open Grid Computing copyrights in iw_cxgb3 driver 2007-02-16 13:57:35 -08:00
iwch.c RDMA/cxgb3: Set the max_mr_size device attribute correctly 2008-04-29 13:46:52 -07:00
iwch.h RDMA/cxgb3: Set the max_mr_size device attribute correctly 2008-04-29 13:46:52 -07:00
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile INFINIBAND: Remove 'TOPDIR' from Makefiles 2008-01-28 23:14:37 +01:00
tcb.h RDMA/cxgb3: Add driver for Chelsio T3 RNIC 2007-02-12 16:16:18 -08:00