x86: prevent stale state of c1e_mask across CPU offline/online
authorThomas Gleixner <tglx@linutronix.de>
Mon, 22 Sep 2008 16:54:29 +0000 (18:54 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 23 Sep 2008 09:38:52 +0000 (11:38 +0200)
commit4faac97d44ac27bdbb010a9c3597401a8f89341f
tree680f128d2bf1cec0fdc77f7a8cb3f3f54264d282
parent6441402b1f173fa38e561d3cee7c01c32e5281ad
x86: prevent stale state of c1e_mask across CPU offline/online

Impact: hang which happens across CPU offline/online on AMD C1E systems.

When a CPU goes offline then the corresponding bit in the broadcast
mask is cleared. For AMD C1E enabled CPUs we do not reenable the
broadcast when the CPU comes online again as we do not clear the
corresponding bit in the c1e_mask, which keeps track which CPUs
have been switched to broadcast already. So on those !$@#& machines
we never switch back to broadcasting after a CPU offline/online cycle.

Clear the bit when the CPU plays dead.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/process.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
include/asm-x86/idle.h