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

[Xen-devel] Re: Linux questions



On Tue, Dec 04, 2007 at 11:27:02AM +0000, Keir Fraser wrote:
> On 4/12/07 11:13, "Andi Kleen" <andi@xxxxxxxxxxxxxx> wrote:
> 
> >>> I have to disagree: At least the uses of barrier() in monotonic_clock()
> >>> appear
> >>> to be in places where in reality (and from a theoretical standpoint) rmb()
> >>> ought to be used.
> >> 
> >> We're sync'ing against concurrent updates of a this_cpu variable. We can
> >> only race updates in a local ISR, and hence barrier() suffices.
> > 
> > Not if you use RDTSC inside the loop.
> 
> I must disagree! And I *know* that RDTSC is not a serialising instruction...
> 
> If we race, then there was an interrupt. Interrupt delivery is a
> serialisation point for the interrupted instruction stream.

The synchronization relies on the RDTSC happening between the 
two sequence number checks. Otherwise you can get inconsistent state
between RDTSC and the xtime data which might be changing asynchronously 
on another CPU. Therefore you need RDTSC barriers.

-Andi

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