Re: [PATCH] ret_from_irq adjustment

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

 



On Mon, 9 Oct 2006 14:53:33 +0100, Ralf Baechle <ralf@xxxxxxxxxxxxxx> wrote:
> ipi_decode() has lost it's pt_regs argument like most of the interrupt
> related functions, so Atushi's patch was right.  Any interrupt handler
> that wants to get a pointer to the register frame can do so by calling
> get_irq_regs().

Yes, excuse me for a terse description.

> So with Atsushi's patch applied VSMP and SMTC with only two TCs activated
> are working again.  It still crashes with 5 TCs enabled:
> 
> Cpu 1
> $ 0   : 00000000 18102000 00000000 8041ed44
> $ 4   : 00000000 00000000 8041ec88 00000000
> $ 8   : 00000000 18001c00 8010de78 80430000
> $12   : 80420000 fffffffb ffffffff 0000000a
> $16   : 00000000 00000001 8041ec04 8041ec08
> $20   : 803b0000 8041ed40 80380000 18102000
> $24   : 00000000 810c3b11
> $28   : 810c2000 810c3b58 00000100 80108bdc
> Hi    : 00000009
> Lo    : fbe7d600
> epc   : 80132b74 profile_tick+0x20/0xb4     Not tainted
> ra    : 80108bdc local_timer_interrupt+0x10/0x30
> Status: 1100a603    KERNEL EXL IE

Hmm, this would be because local_timer_interrupt was called from
ipi_decode().  Is this a proper fix?

diff --git a/arch/mips/kernel/smtc-asm.S b/arch/mips/kernel/smtc-asm.S
index 1cb9441..20938a4 100644
--- a/arch/mips/kernel/smtc-asm.S
+++ b/arch/mips/kernel/smtc-asm.S
@@ -101,7 +101,9 @@ FEXPORT(__smtc_ipi_vector)
 	lw	t0,PT_PADSLOT5(sp)
 	/* Argument from sender passed in stack pad slot 4 */
 	lw	a0,PT_PADSLOT4(sp)
-	PTR_LA	ra, _ret_from_irq
+	LONG_L	s0, TI_REGS($28)
+	LONG_S	sp, TI_REGS($28)
+	PTR_LA	ra, ret_from_irq
 	jr	t0
 
 /*


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

  Powered by Linux