• Daniel Hellstrom's avatar
    sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines · ecbc42b7
    Daniel Hellstrom authored
    Implement the three IPIs (resched, single and cpu-mask) generation
    and interrupt handler catch. The sun4m has 15 soft-IRQs and three
    of them is used with this patch, the three IPIs was previously
    implemented with the cross-call IRQ15 which does not work with
    locking routines such as spinlocks because IRQ15 is NMI, it may
    cause deadlock.
    
    The IRQ trap handler code assumes (in the same spritit as the old
    it seems) that hard interrupts will be generated until handled
    (level), when a IRQ happens the IRQ pending register is checked
    for pending soft-IRQs. When both hard and soft IRQ happens at the
    same time only soft-IRQs are handled.
    
    The old code implemented a soft-IRQ traphandler at IRQ14 which
    called smp_reschedule_irq which in turn called set_need_resched.
    It seems to be an old relic and is replaced with the interrupt
    traphander exit code RESTORE_ALL, it calls schedule() when
    appropriate.
    Signed-off-by: default avatarDaniel Hellstrom <daniel@gaisler.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ecbc42b7
smp_32.c 10.3 KB