• Geoff Levand's avatar
    powerpc/ps3: Fix lost SMP IPIs · 72f3bea0
    Geoff Levand authored
    Fixes the PS3 bootup hang introduced in 3.0-rc1 by:
    
      commit 317f3941
      sched: Move the second half of ttwu() to the remote cpu
    
    Move the PS3's LV1 EOI call lv1_end_of_interrupt_ext() from ps3_chip_eoi()
    to ps3_get_irq() for IPI messages.
    
    If lv1_send_event_locally() is called between a previous call to
    lv1_send_event_locally() and the coresponding call to
    lv1_end_of_interrupt_ext() the second event will not be delivered to the
    target cpu.
    
    The PS3's SMP IPIs are implemented using lv1_send_event_locally(), so if two
    IPI messages of the same type are sent to the same target in a relatively
    short period of time the second IPI event can become lost when
    lv1_end_of_interrupt_ext() is called from ps3_chip_eoi().
    
    CC: stable@kernel.org
    Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    72f3bea0
interrupt.c 19.7 KB