[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [xen-unstable test] 6947: regressions - trouble: broken/fail/pass
- To: Jan Beulich <JBeulich@xxxxxxxxxx>
- From: Keir Fraser <keir.xen@xxxxxxxxx>
- Date: Tue, 03 May 2011 11:09:33 +0100
- Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
- Delivery-date: Tue, 03 May 2011 03:10:47 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:user-agent:date:subject:from:to:cc:message-id :thread-topic:thread-index:in-reply-to:mime-version:content-type :content-transfer-encoding; bh=YrToF2VKixhytU9Xy8+TYfarh64PDfeyBsEr/nGUFFQ=; b=hoFywbGm/XwmleLCGDBUCXWjaH1Yl4Yr99pga6b6kVZmTnkVQy0gIsoGiEc6PSNFxF Un+ONjPO7iIxlJ1s970ilXqeAJqHXB5b5TQOlB5WH/3tECl0bwlis+PfwlLQc0SKtSSZ MJsFbHUjdS3R9xxnw6Dfo2dGcmcFAbG9lNAbE=
- 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=vQ31FDsUDX5Zn/ughFHzSMfBq2h7XkL/aDBq7+B7CBVj/VyKKbAeVhuU/X4Pl/xaLG 6enoPVB3NZgrw8Iut3kEeqmH7D01ygrUUxzuloW2fOh8u7MG35sAjHDFl/dlz8xx3Qgb KIdRuZEOyIcMxAi7VbNa5ezPcAlmaLmGn9nI0=
- List-id: Xen developer discussion <xen-devel.lists.xensource.com>
- Thread-index: AcwJejLPkO5EgfAJf0GJSnoL14MLXw==
- Thread-topic: [Xen-devel] [xen-unstable test] 6947: regressions - trouble: broken/fail/pass
On 03/05/2011 10:35, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:
>> Oh, another way would be to make lookup_slot invocations from IRQ context be
>> RCU-safe. Then the radix tree updates would not have to synchronise on the
>> irq_desc lock? And I believe Linux has examples of RCU-safe usage of radix
>> trees -- certainly Linux's radix-tree.h mentions RCU.
>>
>> I must say this would be far more attractive to me than hacking the xmalloc
>> subsystem. That's pretty nasty.
>
> I think that I can actually get away with two stage insertion/removal
> without needing RCU, based on the fact that prior to these changes
> we have the translation arrays also hold zero values that mean "does
> not have a valid translation". Hence I can do tree insertion (removal)
> with just d->event_lock held, but data not yet (no longer) populated,
> and valid <-> invalid transitions only happening with the IRQ's
> descriptor lock held (and interrupts disabled). All this requires is that
> readers properly deal with the non-populated state, which they
> already had to in the first version of the patch anyway.
But the readers in irq context will call lookup_slot() without d->event_lock
held? In that case you do need an RCU-aware version of radix-tree.[ch],
because lookups can be occurring concurrently with insertions/deletions.
Good news is that the RCU-aware radix tree implementation hides the RCU
details from you entirely.
Well, in any case, I'm happy to iterate on this patch if necessary.
-- Keir
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel