diff options
author | Anton Blanchard <anton@samba.org> | 2005-09-27 21:45:38 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-28 07:46:41 -0700 |
commit | b3ca80935100af47f226be439cb266378dab7bf7 (patch) | |
tree | 8633bb97958ccc79a5f7a96d391aaca1bab926cd /arch/ppc64 | |
parent | ed90fb4a19956cece996eb1d26534f592918730e (diff) | |
download | op-kernel-dev-b3ca80935100af47f226be439cb266378dab7bf7.zip op-kernel-dev-b3ca80935100af47f226be439cb266378dab7bf7.tar.gz |
[PATCH] ppc64: Add missing barrier() in kexec code
Mikey and I were testing kexec and hit a lockup. It turns out gcc 4.0
optimises the kexec_prepare_cpus loop so we avoid reloading paca.hw_cpu_id.
A gcc barrier() fixes the problem.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc64')
-rw-r--r-- | arch/ppc64/kernel/machine_kexec.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/ppc64/kernel/machine_kexec.c b/arch/ppc64/kernel/machine_kexec.c index 4775f12..bf7cc4f 100644 --- a/arch/ppc64/kernel/machine_kexec.c +++ b/arch/ppc64/kernel/machine_kexec.c @@ -205,6 +205,7 @@ static void kexec_prepare_cpus(void) continue; while (paca[i].hw_cpu_id != -1) { + barrier(); if (!cpu_possible(i)) { printk("kexec: cpu %d hw_cpu_id %d is not" " possible, ignoring\n", |