Re: Commit 78eef01b0fae087c5fadbd85dd4fe2918c3a015f (on_each_cpu(): disable local interrupts) Breaks SGI IP32

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux