Index: arch/ia32/include/barrier.h
===================================================================
--- arch/ia32/include/barrier.h	(revision 0b5ac364286bd4f71ec8dbd05e4d57b5bd850133)
+++ arch/ia32/include/barrier.h	(revision 802bb951098e87363dbfeefb20f97e4cd0cfc93a)
@@ -56,15 +56,27 @@
 
 #ifdef CONFIG_FENCES_P4
-#	define memory_barrier()	__asm__ volatile ("mfence\n" ::: "memory")
+#	define memory_barrier()		__asm__ volatile ("mfence\n" ::: "memory")
 #	define read_barrier()		__asm__ volatile ("lfence\n" ::: "memory")
-#	define write_barrier()		__asm__ volatile ("sfence\n" ::: "memory")
+#	ifdef CONFIG_WEAK_MEMORY
+#		define write_barrier()	__asm__ volatile ("sfence\n" ::: "memory")
+#	else
+#		define write_barrier()
+#	endif
 #elif CONFIG_FENCES_P3
 #	define memory_barrier()		cpuid_serialization()
 #	define read_barrier()		cpuid_serialization()
-#	define write_barrier()		__asm__ volatile ("sfence\n" ::: "memory")
+#	ifdef CONFIG_WEAK_MEMORY
+#		define write_barrier()	__asm__ volatile ("sfence\n" ::: "memory")
+#	else
+#		define write_barrier()
+#	endif
 #else
 #	define memory_barrier()		cpuid_serialization()
 #	define read_barrier()		cpuid_serialization()
-#	define write_barrier()		cpuid_serialization()
+#	ifdef CONFIG_WEAK_MEMORY
+#		define write_barrier()	cpuid_serialization()
+#	else
+#		define write_barrier()
+#	endif
 #endif
 
