[ofa-general] [RFC/PATCH 2/2] RDMA/cxgb3: Fix severe limit on userspace memory registration size

Steve Wise swise at opengridcomputing.com
Wed May 7 09:30:12 PDT 2008


Roland Dreier wrote:
> 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 at cisco.com>
>   
Acked-by: Steve Wise <swise at opengridcomputing.com>



More information about the general mailing list