On 2021/2/23 0:02, Jason Gunthorpe wrote: > On Sat, Feb 20, 2021 at 08:40:02AM +0000, liweihang wrote: >> On 2021/2/10 3:54, Jason Gunthorpe wrote: >>> On Sun, Feb 07, 2021 at 11:12:49AM +0800, Weihang Li wrote: >>>> The HIP09 introduces the DCA(Dynamic Context Attachment) feature which >>>> supports many RC QPs to share the WQE buffer in a memory pool. If a QP >>>> enables DCA feature, the WQE's buffer will not be allocated when creating >>>> but when the users start to post WRs. This will reduce the memory >>>> consumption when there are too many QPs are inactive. >>>> One a WQE buffer is allocated it still acts as a normal WQE ring >>> buffer? So this DCA logic is to remap the send queue buffer based on >>> demand for SQEs? How does it interact with the normal max send queue >>> entries reported? >>> >> >> Not exactly. If DCA is enabled, we first allocate a memory pool with a >> default size when opening device. Each time we trying to post WR(s) to a >> QP, the driver will check if current QP has WQE buffer. >> >> If not, the driver will check whether there is enough free memory in the >> DCA memory pool. If there is, the QP will get WQE buffer from the >> pool, > > Does that mean the QP can have a non-contiguous list of buffers? Ie it > isn't just a linear ring of memory? > > Jason > Yes, when using multilevel addressing, the virtual address of QP's buffers may be non-contiguous to avoid memory fragmentation. Weihang