lkml.org 
[lkml]   [2011]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] x86: use int instead of long to set reset vector back to 0
Date
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


\
 
 \ /
  Last update: 2011-02-08 05:27    [from the cache]
©2003-2011 Jasper Spaans