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

RE: [Xen-ia64-devel] Re: [Xen-devel] [PATCH] fix event channelnotification loss on IA64

>From: Keir Fraser
>Sent: 2006年6月29日 21:29
>On 29 Jun 2006, at 06:43, Isaku Yamahata wrote:
>> evtchn_do_upcall() has a micro optimization which is depends on
>> that xchg is a barrier.
>> However xchg of IA64 has acquire semantics so that event
>> channel notification is lost sometimes. This patch fixes it.
>clear_bit() isn't a barrier either (at least according to Linux bitop
>semantics). You want 'rmb();'. I suggest just putting it inside ifndef
>CONFIG_X86, with the comment about XCHG being a barrier on x86
>just before the ifndef. Leave the zap of pending flag as a plain write.
>  -- Keir

        Yes, the explicit semantic of clear_bit doesn’t contain the barrier, 
which however implicitly imposes a partial barrier on xen/ia64 due to its 
memory model. On IA64, a acquire semantic serves to ensure current 
instruction made visible prior to all subsequent instructions, and clear_bit 
on IA64 is implemented with cmpxchg.acq which can ensure subsequent 
event manipulations strictly following event indicator clearance.

        But, in this special case, seems to use rmb() is preferred, since this 
clearance doesn't need to be a semaphore operation which should be 


Xen-devel mailing list



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