Tian, Kevin
2006-Jun-30 02:57 UTC
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 >placed >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 light. Thanks Kevin _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel