• Andi Kleen's avatar
    [PATCH] x86_64: Fixing smpboot timing problem · 8f5a9b18
    Andi Kleen authored
    This patch fixes the SMP boot timing problem that hit various people and was
    introduced in 2.6.12. Please apply to stable.
    
    >From Eric Biederman
    
    sync_tsc was using smp_call_function to ask the boot processor
    to report it's tsc value.  smp_call_function performs an IPI_send_allbutself
    which is a broadcast ipi.  There is a window during processor startup during
    which the target cpu has started and before it has initialized it's interrupt
    vectors so it can properly process an interrupt.  Receveing an interrupt
    during that window will triple fault the cpu and do other nasty things.
    
    Why cli does not protect us from that is beyond me.
    
    The simple fix is to match ia64 and provide a smp_call_function_single.
    Which avoids the broadcast and is more efficient.
    
    This certainly fixes the problem of getting stuck on boot which was
    very easy to trigger on my SMP Hyperthreaded Xeon, and I think
    it fixes it for the right reasons.
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarChris Wright <chrisw@osdl.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    8f5a9b18
smpboot.c 24.8 KB