Messages in this thread Patch in this message | | | From | Don Zickus <> | Subject | [PATCH] x86: use int instead of long to set reset vector back to 0 | Date | Mon, 7 Feb 2011 23:25:00 -0500 |
| |
A customer of ours, complained that when setting the reset vector back to 0, it trashed other data and hung their box. They noticed when only 4 bytes were set to 0 instead of 8, everything worked correctly.
I don't know where to find this in the spec to know if this is correct, but looking at historical info of the code, x86_64 used to use 'int' here whereas i386 used to use 'long'. When they got merged it seemed like 'long' was used. So the change seems to make sense from that point of view.
I am hoping someone smarter than me can verify this.
Signed-off-by: Don Zickus <dzickus@redhat.com> --- arch/x86/include/asm/smpboot_hooks.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/include/asm/smpboot_hooks.h b/arch/x86/include/asm/smpboot_hooks.h index 6c22bf3..42d0366 100644 --- a/arch/x86/include/asm/smpboot_hooks.h +++ b/arch/x86/include/asm/smpboot_hooks.h @@ -34,7 +34,7 @@ static inline void smpboot_restore_warm_reset_vector(void) */ CMOS_WRITE(0, 0xf); - *((volatile long *)phys_to_virt(apic->trampoline_phys_low)) = 0; + *((volatile int *)phys_to_virt(apic->trampoline_phys_low)) = 0; } static inline void __init smpboot_setup_io_apic(void) -- 1.7.3.5
| |