aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2007-06-25 17:04:37 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-06-25 17:54:52 -0400
commitb9e3614f444f6546204f4538afcaa3ebe36d49f2 (patch)
tree44680e2794a923547a6952f1c4b8cf10d5d425c7
parent189548642c5962e60c3667bdb3a703fe0bed12a6 (diff)
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>
-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 d7a0512f88e0..7f846a7d6bcc 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)
539 val = paravirt_read_msr(msr, &_err); \ 539 val = paravirt_read_msr(msr, &_err); \
540} while(0) 540} while(0)
541 541
542#define wrmsrl(msr,val) ((void)paravirt_write_msr(msr, val, 0)) 542#define wrmsrl(msr,val) wrmsr(msr, (u32)((u64)(val)), ((u64)(val))>>32)
543#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b) 543#define wrmsr_safe(msr,a,b) paravirt_write_msr(msr, a, b)
544 544
545/* rdmsr with exception handling */ 545/* rdmsr with exception handling */