Re: [Xen-devel] Re: [PATCH 3/4] [Net] Support Xen accelerated network plugin modules

Stephen Hemminger
2007-05-22T15:05:12Z

On Tue, 22 May 2007 13:44:28 +0100
Kieran Mansley <kmansley@solarflare.com> wrote:

> On Tue, 2007-05-22 at 08:48 +0100, Keir Fraser wrote:
> >
> >
> > On 22/5/07 08:28, "Kieran Mansley"
<kmansley@solarflare.com> wrote:
> >
> > > On Tue, 2007-05-22 at 08:15 +0100, Kieran Mansley wrote:
> > >> RCU on its own wouldn''t
> > >> prevent the accelerated plugin being unloaded while netfront
was using
> > >> one of the hooks.
> > >
> > > Hmm, actually I think it could be used to do that.  I''ll
take a look.
> >
> > Eagerly zap the function pointers, then wait one RCU period so every
CPU
> > goes through a quiescent point before unloading the module?
> >
> >  -- Keir
>
> Am I right in thinking that if one of the functions that was protected
> by RCU was to block, that would be a bad thing?  Clearly the data path
> hooks can''t/don''t block, but I''m not sure
it''s so obvious for things
> like probing a new device.
>
> Kieran
>

The same thing is already done to handle network protocols already.
RCU is used for the object handle (including function pointers).
You need to use:
  * put rcu structure in accelerator list member
    and initialize it to the callback
  * on addition increase refcount
on deletion
  * call list_del_rcu() on removal
  * in rcu callback you do last step
	like drop module refcount and free.

--
Stephen Hemminger <shemminger@linux-foundation.org>