linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH #upstream-fixes] sata_mv fix MSI irq race condition
@ 2009-03-10 20:28 Mark Lord
  2009-03-13 18:57 ` Jeff Garzik
  0 siblings, 1 reply; 2+ messages in thread
From: Mark Lord @ 2009-03-10 20:28 UTC (permalink / raw)
  To: Jeff Garzik, IDE/ATA development list

Fix a (rare) race condition in mv_interrupt() when using MSI.

The value of hpriv->main_irq_mask_addr can change on on the fly,
and without this patch we could end up writing back a stale copy
to the hardware.

Signed-off-by: Mark Lord <mlord@pobox.com>
--

** This is required for 2.6.29 and beyond ***

--- old/drivers/ata/sata_mv.c	2009-03-10 16:19:39.000000000 -0400
+++ new/drivers/ata/sata_mv.c	2009-03-10 16:21:29.000000000 -0400
@@ -2218,12 +2218,13 @@
 		else
 			handled = mv_host_intr(host, pending_irqs);
 	}
-	spin_unlock(&host->lock);
 
 	/* for MSI: unmask; interrupt cause bits will retrigger now */
 	if (using_msi)
 		writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr);
 
+	spin_unlock(&host->lock);
+
 	return IRQ_RETVAL(handled);
 }
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-03-13 18:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-10 20:28 [PATCH #upstream-fixes] sata_mv fix MSI irq race condition Mark Lord
2009-03-13 18:57 ` Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).