#2082 closed defect (fixed)

Nested interrupts broken since inclusion of smp changes

Reported by: Pierre Willenbrock Owned by: Joel Sherrill
Priority: normal Milestone: 4.11
Component: bsps Version: 4.11
Severity: normal Keywords:
Cc: sebastian.huber@…, gedare@… Blocked By:
Blocking:

Description

Commit 0bd3f7e5d12fdbfb5bf4aa4a4169c67bfd92c988 changed c/src/lib/libbsp/sparc/shared/irq_asm.S in a way that allows the current register window of the interrupted code to be stored in its own stack frame, instead of in the interrupt stack frame, as expected by simple_return.

To avoid this, interrupts must stay disabled until after the "mov %sp, %fp" instruction is executed.

That instruction points the %sp of the interrupted code to the ISF, so a window overflow puts the register contents there(at CPU_STACK_FRAME_*). The correct %sp of the interrupted code is restored from the ISF_I6_OFFSET of the ISF during simple_return.

In the non-smp case, simply exchanging the whole stack switch with the code manipulating the psr works.

Attachments (1)

0001-Move-enabling-of-other-traps-after-the-stack-switch.patch (6.2 KB) - added by Pierre Willenbrock on Nov 30, 2012 at 12:56:56 PM.
Fix nested interrupts on non-smp systems

Download all attachments as: .zip

Change History (5)

comment:1 Changed on Nov 30, 2012 at 12:49:58 PM by Gedare Bloom

Cc: Gedare Bloom added

Changed on Nov 30, 2012 at 12:56:56 PM by Pierre Willenbrock

Fix nested interrupts on non-smp systems

comment:2 Changed on Aug 14, 2013 at 8:46:09 AM by Sebastian Huber

Cc: Sebastian Huber added

comment:3 Changed on Apr 1, 2014 at 11:22:22 AM by Sebastian Huber

Resolution: fixed
Status: newclosed

I am pretty sure this bug is fixed in the current SMP code.

comment:4 Changed on Nov 24, 2014 at 6:58:28 PM by Gedare Bloom

Version: HEAD4.11

Replace Version=HEAD with Version=4.11 for the tickets with Milestone >= 4.11

Note: See TracTickets for help on using tickets.