[ofa-general] Re: [GIT PULL] please pull infiniband.git
Michael S. Tsirkin
mst at dev.mellanox.co.il
Thu Mar 29 11:35:06 PDT 2007
> Quoting Roland Dreier <rdreier at cisco.com>:
> Subject: Re: [ofa-general] Re: [GIT PULL] please pull infiniband.git
>
> > > I'm still thinking about synchronizing with the completion EQ's irq.
> >
> > Let's discuss this? Can you formulate what's bothering you?
>
> I don't like the fact that it's very hard to even write down exactly
> what we're guaranteeing. So it's not clear to me that other low-level
> drivers statisfy the constraint (since I'm not sure what the
> constraint is).
Here is the rule.
It should be guaranteed that no event handlers - completion events or async events -
for this QP - are in progress after QP has been destroyed or moved to reset
state.
Does this make sense?
> Also it just helps with one particular case of a class of bugs --
> there are many other ways that polling a CQ could fail to synchronize
> with destroying a QP. I'd rather try to avoid the whole class of bugs.
Agreed.
I think the rest of ULPs are taken care of if we replace
qp pointer in ib_wc with qpn + qp_context pair.
Have you seen this patch?
This way a ULP can stick a pointer to its own structure
and in polling thread, do:
foo = wc.qp_context;
if (unlikely(foo->dead))
return;
and to destroy the QP:
foo->dead = 1;
ib_destroy_qp(qp)
flush(polling thread)
free(foo)
--
MST
More information about the general
mailing list