aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorMark Haverkamp <markh@osdl.org>2006-05-10 12:13:11 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-05-20 10:22:44 -0400
commitdf3b7668715f9acfe6ff37dd886f68e46ccd677e (patch)
treee789432027f8b11775f9f55e9f1f6d64df1fe2c1 /drivers/scsi
parent404d9a900b5bc83a3780ec337ca6fdcb04b766c0 (diff)
[SCSI] aacraid: sa race condition fix
Received From Mark Salyzyn A race condition existed that could result in a lost completion of a command to the ppc based cards. Signed-off-by: Mark Haverkamp <markh@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/aacraid/sa.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/aacraid/sa.c b/drivers/scsi/aacraid/sa.c
index ecc47b605c58..88d400fccc94 100644
--- a/drivers/scsi/aacraid/sa.c
+++ b/drivers/scsi/aacraid/sa.c
@@ -66,11 +66,11 @@ static irqreturn_t aac_sa_intr(int irq, void *dev_id, struct pt_regs *regs)
66 sa_writew(dev, DoorbellClrReg_p, PrintfReady); /* clear PrintfReady */ 66 sa_writew(dev, DoorbellClrReg_p, PrintfReady); /* clear PrintfReady */
67 sa_writew(dev, DoorbellReg_s, PrintfDone); 67 sa_writew(dev, DoorbellReg_s, PrintfDone);
68 } else if (intstat & DOORBELL_1) { // dev -> Host Normal Command Ready 68 } else if (intstat & DOORBELL_1) { // dev -> Host Normal Command Ready
69 aac_command_normal(&dev->queues->queue[HostNormCmdQueue]);
70 sa_writew(dev, DoorbellClrReg_p, DOORBELL_1); 69 sa_writew(dev, DoorbellClrReg_p, DOORBELL_1);
70 aac_command_normal(&dev->queues->queue[HostNormCmdQueue]);
71 } else if (intstat & DOORBELL_2) { // dev -> Host Normal Response Ready 71 } else if (intstat & DOORBELL_2) { // dev -> Host Normal Response Ready
72 aac_response_normal(&dev->queues->queue[HostNormRespQueue]);
73 sa_writew(dev, DoorbellClrReg_p, DOORBELL_2); 72 sa_writew(dev, DoorbellClrReg_p, DOORBELL_2);
73 aac_response_normal(&dev->queues->queue[HostNormRespQueue]);
74 } else if (intstat & DOORBELL_3) { // dev -> Host Normal Command Not Full 74 } else if (intstat & DOORBELL_3) { // dev -> Host Normal Command Not Full
75 sa_writew(dev, DoorbellClrReg_p, DOORBELL_3); 75 sa_writew(dev, DoorbellClrReg_p, DOORBELL_3);
76 } else if (intstat & DOORBELL_4) { // dev -> Host Normal Response Not Full 76 } else if (intstat & DOORBELL_4) { // dev -> Host Normal Response Not Full