[ofa-general] Re: pkey change handling patch

Michael S. Tsirkin mst at dev.mellanox.co.il
Thu Apr 19 05:57:22 PDT 2007


> Quoting Roland Dreier <rdreier at cisco.com>:
> Subject: Re: pkey change handling patch
> 
>  > Could be a good idea, but note this will require creating another
>  > WQ for cache updates, otherwise e.g. IPoIB
>  > will deadlock waiting for it.
> 
> Actually, on further thought, it's kind of a stupid idea.  The whole
> point of the cache module is to be usable in places where blocking
> isn't allowed.  If it's being called from a context where we know we
> can block, then there's no point in going through the cache at all.
> 
>  > By the way, are there any users for the non-blocking API?
>  > Maybe we can simply relax the requirement, and make all API's
>  > blocking?
> 
> Well, at least mthca is using it when posting WQEs to MLX QPs.  But it
> could keep its own internal cache (which would be much simpler, and
> easier to keep in sync since it sees all MADs that change the cache as
> they go by).
> 
> If there are no other users for a non-blocking API then we could tear
> out the whole caching mess and be much happier.
> 
> At least IPoIB and SRP seem like they could live without the cache,
> with the addition of ib_find_pkey() and ib_find_gid() convenience
> functions, and they're the only users in infiniband/ulp.
> infiniband/core would take a little more auditing.

Good point.
So since all this thread was started by Moni because of IPoIB,
the path is clear in that respect, and would already be a step in the
right direction:

- a patch to add ib_find_pkey() and ib_find_gid() to core
- a patch to replace cache usage in IPoIB / SRP with uncached
  hardware accesses on top of this
- pkey change handling patch on top of these

Moni, what do you think?

As a follow-up, we can then
- get rid of cache in mthca by implementing device-specific cache.
- audit core for cache usage - most likely we'll find everything can be
  done from a context where we can block

By the way, here's yet another bright idea:

I *think* we can keep this provider-specific cache updated by snooping incoming
MADs in driver.  And if it can be done this way, in all providers, we might be able to
simply require that query_pkey/query_gid in providers do not sleep.
If that's true, we'll save ourselves the work of auditing core - ib_find_pkey()
and ib_find_gid() will be a drop-in replacement for cache.

Roland, what do you think?

-- 
MST



More information about the general mailing list