diff options
author | Mark Haverkamp <markh@osdl.org> | 2006-05-10 12:13:11 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-05-20 10:22:44 -0400 |
commit | df3b7668715f9acfe6ff37dd886f68e46ccd677e (patch) | |
tree | e789432027f8b11775f9f55e9f1f6d64df1fe2c1 /drivers | |
parent | 404d9a900b5bc83a3780ec337ca6fdcb04b766c0 (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')
-rw-r--r-- | drivers/scsi/aacraid/sa.c | 4 |
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 |