Re: [PATCH rfc 06/10] IB/cq: Don't force IB_POLL_DIRECT poll context for ib_process_cq_direct
From: Bart Van Assche <hidden>
Date: 2017-03-14 21:34:40
Also in:
linux-nvme, linux-rdma
From: Bart Van Assche <hidden>
Date: 2017-03-14 21:34:40
Also in:
linux-nvme, linux-rdma
On Mon, 2017-03-13 at 10:24 +0200, Sagi Grimberg wrote:
quoted
Before this patch the completions from each CQ were processed sequentially. That's a big change so I think this should be mentioned clearly in the header above ib_process_cq_direct().=20 Note that I now see that the cq lock is not sufficient for mutual exclusion here because we're referencing cq->wc array outside of it. =20 There are three options I see here: 1. we'll need to allocate a different wc array for polling mode, perhaps a smaller one? 2. Export __ib_process_cq (in some form) with an option to pass in a wc array. 3. Simply not support non-selective polling but it seems like a shame... =20 Any thoughts?
I doubt it is possible to come up with an algorithm that recognizes whether or not two different ib_process_cq() calls are serialized. So the ib_process_cq() caller will have to provide that information. How about add= ing an ib_wc array argument to ib_process_cq() and modifying __ib_process_cq() such that it uses that array if specified and cq->wc otherwise? Bart.=