diff options
author | Björn Steinbrink <B.Steinbrink@gmx.de> | 2007-06-25 17:04:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-06-25 17:54:52 -0400 |
commit | b9e3614f444f6546204f4538afcaa3ebe36d49f2 (patch) | |
tree | 44680e2794a923547a6952f1c4b8cf10d5d425c7 | |
parent | 189548642c5962e60c3667bdb3a703fe0bed12a6 (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.h | 2 |
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 */ |