On 21/06/06 13:11 +0100, Ralf Baechle wrote: > On Wed, Jun 21, 2006 at 11:51:50AM +0200, Domen Puncer wrote: > > > > #define on_each_cpu(func,info,retry,wait) \ > > > ({ \ > > > WARN_ON(irqs_disabled()); \ > > > func(info); \ > > > 0; \ > > > }) > > > > On Alchemy au1200 this produces: > > [4294667.296000] Synthesized TLB modify handler fastpath (33 instructions). > > [4294667.296000] Badness in r4k_flush_icache_range at /home/domen/tmp/linux-2.6.bisecting/linux-mips.git/arch/mips/mm/c-r4k.c:516 > > [4294667.296000] Call Trace: > > [4294667.296000] [<80113434>] r4k_flush_icache_range+0x144/0x150 > > [4294667.296000] [<803f0000>] inflate_dynamic+0x634/0x70c > > [4294667.296000] [<803f3630>] trap_init+0x3c/0x440 > > Pretty much as expected, thanks! Guess I forgot to state my simptoms... they don't seem so expected to me :-) set_c0_status(ALLINTS) causes in_interrupt to be non-zero, which in time causes a hang via kernel/printk.c:acquire_console_sem->BUG(). set_c0_status call trace: start_kernel->init_IRQ->arch_init_irq->set_c0_status I'm a bit lost in mipsregs.h, and I can't figure out why it sets preempt_count() to 0x100 (that being HARD_IRQ). Ideas? Domen