|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
|
|
|
|