slb_flush_and_rebolt panic trace in 2.6.12-rc2-mm3
Anton Blanchard
anton at samba.org
Wed Apr 13 14:33:57 EST 2005
Hi,
> Hello, I was trying to boot the latest kernel version, 2.6.12-rc2-mm3
> on a p630 box, and found the kernel throwing up this call trace after
> boot. It does come down to the login prompt, but keeps throwing out
> the below call trace when you attempt to do any operations on the box.
The new irqs on scheduling path looks to have caused this. We cannot
call switch_slb with interrupts off. This patch should fix it.
Anton
--
Disable interrupts around switch_slb, required now generic code calls it
with interrupts on.
Signed-off-by: Anton Blanchard <anton at samba.org>
===== include/asm-ppc64/mmu_context.h 1.23 vs edited =====
--- 1.23/include/asm-ppc64/mmu_context.h 2005-01-26 08:50:16 +11:00
+++ edited/include/asm-ppc64/mmu_context.h 2005-04-13 14:29:28 +10:00
@@ -51,6 +51,8 @@
static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
struct task_struct *tsk)
{
+ unsigned long flags;
+
if (!cpu_isset(smp_processor_id(), next->cpu_vm_mask))
cpu_set(smp_processor_id(), next->cpu_vm_mask);
@@ -58,6 +60,8 @@
if (prev == next)
return;
+ local_irq_save(flags);
+
#ifdef CONFIG_ALTIVEC
if (cur_cpu_spec->cpu_features & CPU_FTR_ALTIVEC)
asm volatile ("dssall");
@@ -67,6 +71,8 @@
switch_slb(tsk, next);
else
switch_stab(tsk, next);
+
+ local_irq_restore(flags);
}
#define deactivate_mm(tsk,mm) do { } while (0)
More information about the Linuxppc64-dev
mailing list