--- /dev/null
+From linux-kernel-owner+chrisw=40sous-sol.org-S932239AbWCUA6A@vger.kernel.org Mon Mar 20 16:59:02 2006
+Date: Mon, 20 Mar 2006 19:57:57 -0500
+From: Jeff Garzik <jeff@garzik.org>
+To: Andrew Morton <akpm@osdl.org>, Linus Torvalds <torvalds@osdl.org>
+CC: "linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>,
+ Linux Kernel <linux-kernel@vger.kernel.org>
+Subject: [libata] sata_mv: fix irq port status usage
+
+From: Jeff Garzik <jeff@garzik.org>
+
+Interrupt handler did not properly initialize a variable on a per-port
+basis, leading to incorrect behavior on ports other than port 0.
+
+Bug caught and fixed by Mark Lord.
+
+Signed-off-by: Jeff Garzik <jeff@garzik.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/scsi/sata_mv.c | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.16.y.orig/drivers/scsi/sata_mv.c
++++ linux-2.6.16.y/drivers/scsi/sata_mv.c
+@@ -1192,7 +1192,6 @@ static void mv_host_intr(struct ata_host
+ u32 hc_irq_cause;
+ int shift, port, port0, hard_port, handled;
+ unsigned int err_mask;
+- u8 ata_status = 0;
+
+ if (hc == 0) {
+ port0 = 0;
+@@ -1210,6 +1209,7 @@ static void mv_host_intr(struct ata_host
+ hc,relevant,hc_irq_cause);
+
+ for (port = port0; port < port0 + MV_PORTS_PER_HC; port++) {
++ u8 ata_status = 0;
+ ap = host_set->ports[port];
+ hard_port = port & MV_PORT_MASK; /* range 0-3 */
+ handled = 0; /* ensure ata_status is set if handled++ */