rapidio/tsi721: fix bug in MSI interrupt handling
authorAlexandre Bounine <alexandre.bounine@idt.com>
Fri, 24 May 2013 22:55:17 +0000 (15:55 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 30 May 2013 13:35:06 +0000 (14:35 +0100)
commit1619f441963ea57fa1082d046da867acfcd4d099
tree66d983ad350fce3ba404b648d6be37fe9c980cc0
parent7cdf9a24694742936fcf78dc6ed8dc31c636141d
rapidio/tsi721: fix bug in MSI interrupt handling

commit 1ccc819da6fda9bee10ab8b72e9adbb5ad3e4959 upstream.

Fix bug in MSI interrupt handling which causes loss of event
notifications.

Typical indication of lost MSI interrupts are stalled message and
doorbell transfers between RapidIO endpoints.  To avoid loss of MSI
interrupts all interrupts from the device must be disabled on entering
the interrupt handler routine and re-enabled when exiting it.
Re-enabling device interrupts will trigger new MSI message(s) if Tsi721
registered new events since entering interrupt handler routine.

This patch is applicable to kernel versions starting from v3.2.

Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/rapidio/devices/tsi721.c