--- /dev/null
+From akpm@osdl.org Fri Mar 24 19:44:12 2006
+Date: Fri, 24 Mar 2006 19:40:37 -0800
+From: Andrew Morton <akpm@osdl.org>
+To: Greg KH <greg@kroah.com>
+Cc: chrisw@sous-sol.org, stable@kernel.org
+Subject: Fix speedstep-smi assembly bug in speedstep_smi_ownership
+Message-Id: <20060324194037.3a7495b7.akpm@osdl.org>
+
+From: Andrew Morton <akpm@osdl.org>
+
+Fix bug identified by Linus Torvalds <torvalds@osdl.org>: the `out'
+instruction depends upon the state of memory_data[], so we need to tell gcc
+that before executing it. (The opcode, not gcc).
+
+Fixes http://bugzilla.kernel.org/show_bug.cgi?id=5553
+
+Thanks to Antonio Ospite <ospite@studenti.unina.it> for testing.
+
+Cc: Dave Jones <davej@codemonkey.org.uk>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+
+ arch/i386/kernel/cpu/cpufreq/speedstep-smi.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- linux-2.6.16.orig/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
++++ linux-2.6.16/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
+@@ -75,7 +75,9 @@ static int speedstep_smi_ownership (void
+ __asm__ __volatile__(
+ "out %%al, (%%dx)\n"
+ : "=D" (result)
+- : "a" (command), "b" (function), "c" (0), "d" (smi_port), "D" (0), "S" (magic)
++ : "a" (command), "b" (function), "c" (0), "d" (smi_port),
++ "D" (0), "S" (magic)
++ : "memory"
+ );
+
+ dprintk("result is %x\n", result);