]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/ps3: Fix lost SMP IPIs
authorGeoff Levand <geoff@infradead.org>
Tue, 8 Nov 2011 12:37:26 +0000 (12:37 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 16 Nov 2011 03:47:54 +0000 (14:47 +1100)
commit03743f08c201d81fbc1f890c90f4d7fb609d4650
tree44ed5dfbfe046d76add301dc8c4555a125a70b3d
parent9fcc28379923aaefd7f98eff3cd78a5008f29025
powerpc/ps3: Fix lost SMP IPIs

Fixes the PS3 bootup hang introduced in 3.0-rc1 by:

  commit a464723963dc660b78e8041ea9f88790d2e5b85
  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: Geoff Levand <geoff@infradead.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/ps3/interrupt.c
arch/powerpc/platforms/ps3/platform.h
arch/powerpc/platforms/ps3/smp.c