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

Re: [Xen-devel] [PATCH 1/2, v2] x86: replace nr_irqs sized per-domain arrays with radix trees



>>> On 03.05.11 at 23:08, Keir Fraser <keir@xxxxxxx> wrote:
> On 03/05/2011 15:08, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:
> 
>> It would seem possible to fold the two trees into one (making e.g. the
>> emuirq bits stored in the upper half of the pointer), but I'm not
>> certain that's worth it as it would make deletion of entries more
>> cumbersome. Unless pirq-s and emuirq-s were mutually exclusive...
>> 
>> v2: Split setup/teardown into two stages - (de-)allocation (tree node
>> (de-)population) is done with just d->event_lock held (and hence
>> interrupts enabled), while actual insertion/removal of translation data
>> gets done with irq_desc's lock held (and interrupts disabled).
> 
> This is mostly okay, because the only operations that occur with irqs
> disabled are read-only on the radix-rtree structure itself, hence no
> alloc/dealloc will happen. *However* those calls to
> radix_tree_lookup[_slot]() are not synchronised wrt your calls to
> radix_tree_{insert,delete}(). The latter hold d->event_lock, while the
> former do not. Hence you need RCU and you need a new first patch in your
> patch set to pull in a modern radix-tree.[ch] from upstream Linux.

Right you are - I didn't pay attention to the tree internal nodes.
Will take a few days though before I can get to this.

Jan


_______________________________________________
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®.