On Tue, Nov 19, 2019 at 04:00:00PM +0800, Liuyixian (Eason) wrote: > > > On 2019/11/19 1:02, Jason Gunthorpe wrote: > > On Mon, Nov 18, 2019 at 09:50:24PM +0800, Liuyixian (Eason) wrote: > >>> It kind of looks like this can be called multiple times? It won't work > >>> right unless it is called exactly once > >>> > >>> Jason > >> > >> Yes, you are right. > >> > >> So I think the reasonable solution is to allocate it dynamically, and I think > >> it is a very very little chance that the allocation will be failed. If this happened, > >> I think the application also needs to be over. > > > > Why do you need more than one work in parallel for this? Once you > > start to move the HW to error that only has to happen once, surely? > > > > Jason > > The flush operation moves QP, not the HW to error. > > For the QP, maybe the process A is posting send while the other > process B is modifying qp to error, both of these two operation > needs to initialize one flush work. That's why it could be called > multiple times. The work function does something that looks like it only has to happen once per QP. One do you need to keep re-queing this thing every time the user posts a WR? Jason