[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: [PATCH 1/3] xen/event: Add reference counting to event channels



On Wed, 2011-10-26 at 17:51 +0100, Ian Campbell wrote:
> On Wed, 2011-10-26 at 16:47 +0100, Daniel De Graaf wrote:
> > @@ -939,6 +943,10 @@ static void unbind_from_irq(unsigned int irq)
> >  {
> >         struct evtchn_close close;
> >         int evtchn = evtchn_from_irq(irq);
> > +       struct irq_info *info = irq_get_handler_data(irq);
> > +
> > +       if (atomic_read(&info->refcnt) > 0 && 
> > !atomic_dec_and_test(&info->refcnt))
> > +               return;
> 
> This isn't all that atomic any more...
> 
> evtchn_make_refcounted() doesn't seem to have any locking which would
> save you...
> 
> Perhaps you could always manipulate this flag under the mapping lock
> (which perhaps is normally taken around about the sort of place you'd
> want to do this anyway) and make it non-atomic?
> 
> Or maybe you could build something with cmpxchg?

Or atomic_inc_unless_negative seems to be a primitive but there's no
atomic_dev_unless_negative so unref is still tricky.

Ian.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.