--- linux-2.6.9/arch/x86_64/kernel/smpboot.c.orig	2009-03-19 17:56:20.730422000 -0700
+++ linux-2.6.9/arch/x86_64/kernel/smpboot.c	2009-03-19 18:04:04.017865000 -0700
@@ -177,7 +177,7 @@ static void __init synchronize_tsc_bp (v
 		 */
 		atomic_inc(&tsc_count_start);
 
-		sync_core();
+		asm volatile("lfence":::"memory");
 		rdtscll(tsc_values[smp_processor_id()]);
 		/*
 		 * We clear the TSC in the last loop:
@@ -249,7 +249,7 @@ static void __init synchronize_tsc_ap (v
 		atomic_inc(&tsc_count_start);
 		while (atomic_read(&tsc_count_start) != num_booting_cpus()) mb();
 
-		sync_core();
+		asm volatile("lfence":::"memory");
 		rdtscll(tsc_values[smp_processor_id()]);
 		if (i == NR_LOOPS-1)
 			write_tsc(0, 0);
--- linux-2.6.9/arch/x86_64/kernel/time.c.orig	2009-03-19 17:56:04.719112000 -0700
+++ linux-2.6.9/arch/x86_64/kernel/time.c	2009-03-19 18:04:04.024868000 -0700
@@ -82,7 +82,7 @@ struct timezone __sys_tz __section_sys_t
 static inline void rdtscll_sync(unsigned long *tsc)
 {
 #ifdef CONFIG_SMP
-	sync_core();
+	asm volatile("lfence":::"memory");
 #endif
 	rdtscll(*tsc);
 }
@@ -322,7 +322,7 @@ unsigned long long monotonic_clock(void)
 			last_offset = vxtime.last_tsc;
 			base = monotonic_base;
 		} while (read_seqretry(&xtime_lock, seq));
-		sync_core();
+		asm volatile("lfence":::"memory");
 		rdtscll(this_offset);
 		offset = (this_offset - last_offset)*1000/cpu_khz; 
 		return base + offset;
@@ -748,7 +748,7 @@ static unsigned int __init hpet_calibrat
 	do {
 		local_irq_disable();
 		hpet_now = hpet_readl(HPET_COUNTER);
-		sync_core();
+		asm volatile("lfence":::"memory");
 		rdtscl(tsc_now);
 		local_irq_restore(flags);
 	} while ((tsc_now - tsc_start) < TICK_COUNT &&
@@ -780,9 +780,9 @@ static unsigned int __init pit_calibrate
 	outb((PIT_TICK_RATE / (1000 / 50)) & 0xff, 0x42);
 	outb((PIT_TICK_RATE / (1000 / 50)) >> 8, 0x42);
 	rdtscll(start);
-	sync_core();
+	asm volatile("lfence":::"memory");
 	while ((inb(0x61) & 0x20) == 0);
-	sync_core();
+	asm volatile("lfence":::"memory");
 	rdtscll(end);
 
 	spin_unlock_irqrestore(&i8253_lock, flags);
--- linux-2.6.9/arch/x86_64/kernel/vsyscall.c.orig	2009-03-19 17:56:01.921199000 -0700
+++ linux-2.6.9/arch/x86_64/kernel/vsyscall.c	2009-03-19 18:04:04.037866000 -0700
@@ -81,7 +81,7 @@ static force_inline void do_vgettimeofda
 			(__jiffies - __wall_jiffies) * (1000000 / HZ);
 
 		if (__vxtime.mode != VXTIME_HPET) {
-			sync_core();
+			asm volatile("lfence":::"memory");
 			rdtscll(t);
 			if (t < __vxtime.last_tsc) t = __vxtime.last_tsc;
 			usec += ((t - __vxtime.last_tsc) *
--- linux-2.6.9/arch/x86_64/kernel/vsyscall-xen.c.orig	2009-03-19 17:56:05.649068000 -0700
+++ linux-2.6.9/arch/x86_64/kernel/vsyscall-xen.c	2009-03-19 18:04:04.030864000 -0700
@@ -81,7 +81,7 @@ static force_inline void do_vgettimeofda
 			(__jiffies - __wall_jiffies) * (1000000 / HZ);
 
 		if (__vxtime.mode != VXTIME_HPET) {
-			sync_core();
+			asm volatile("lfence":::"memory");
 			rdtscll(t);
 			if (t < __vxtime.last_tsc) t = __vxtime.last_tsc;
 			usec += ((t - __vxtime.last_tsc) *
