Re: Re: Re: Re: Re: [PATCH] rdma/siw: avoid smp_store_mb() on a u64

From: Jason Gunthorpe
Date: Fri Jul 12 2019 - 13:45:29 EST


On Fri, Jul 12, 2019 at 05:40:43PM +0000, Bernard Metzler wrote:

> It is because there are two levels a CQ can be armed:
>
> #include <infiniband/verbs.h>
>
> int ibv_req_notify_cq(struct ibv_cq *cq, int solicited_only);
>
> If we kick the CQ handler, we have to clear the whole
> thing. The user later again decides how he wants to get it
> re-armed...SOLICITED completions only, or ALL signaled.

Arrange it so only one of the two bits is ever set and do two
test-and-set bits when a SOLICITED CQE comes in?

Jason