[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

  • To: Jan Beulich <JBeulich@xxxxxxxxxx>, Keir Fraser <keir@xxxxxxx>
  • From: Keir Fraser <keir.xen@xxxxxxxxx>
  • Date: Wed, 04 May 2011 09:13:51 +0100
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Allen M Kay <allen.m.kay@xxxxxxxxx>
  • Delivery-date: Wed, 04 May 2011 01:14:38 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=user-agent:date:subject:from:to:cc:message-id:thread-topic :thread-index:in-reply-to:mime-version:content-type :content-transfer-encoding; b=jHBg0sPm1BLX5+vUU+/DCTvf9kWLdobkZ+40xTAAHlEdwvOKOUeEuFaGPioM2KBeUW PwmIAKA29jaiub9m2HI+RHoQurqF2G6e0rlplwZ0tQ2ezPpho4LQ0M/sZIFamk+SzuHY wgMy/mG6VXByLWx7ZNDD2zONFYaVDNIRh1SRM=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AcwKMzN3WjEhrilJ10K5k6FR7Y8m6w==
  • Thread-topic: [Xen-devel] [PATCH 1/2, v2] x86: replace nr_irqs sized per-domain arrays with radix trees

On 04/05/2011 08:27, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:

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

Actually I'll take a look at it myself.

 -- Keir

> Jan

Xen-devel mailing list



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