From: Björn Steinbrink Date: Mon, 25 Jun 2007 21:04:37 +0000 (+0200) Subject: fix nmi_watchdog=2 bootup hang X-Git-Tag: v2.6.22-rc7~50 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9e3614f444f6546204f4538afcaa3ebe36d49f2;p=linux-2.6 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 Signed-off-by: Linus Torvalds --- diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h index d7a0512f88..7f846a7d6b 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 */