summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2007-06-25 21:04:37 (GMT)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-06-25 21:54:52 (GMT)
commitb9e3614f444f6546204f4538afcaa3ebe36d49f2 (patch)
tree44680e2794a923547a6952f1c4b8cf10d5d425c7 /include
parent189548642c5962e60c3667bdb3a703fe0bed12a6 (diff)
downloadlinux-fsl-qoriq-b9e3614f444f6546204f4538afcaa3ebe36d49f2.tar.xz
fix nmi_watchdog=2 bootup hang
wrmsrl() is broken, dropping the upper 32bits of the value to be written. This broke the NMI watchdog on AMD hardware. (and it probably broke other code too.) Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-i386/paravirt.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h
index d7a0512..7f846a7 100644
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -539,7 +539,7 @@ static inline int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
val = paravirt_read_msr(msr, &_err); \
} while(0)
-#define wrmsrl(msr,val) ((void)paravirt_write_msr(msr, val, 0))
+#define wrmsrl(msr,val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32)
#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b)
/* rdmsr with exception handling */