[SCSI] hpsa: do readl after writel in main i/o path to ensure commands don't get...
authorStephen M. Cameron <scameron@beardog.cce.hp.com>
Tue, 3 May 2011 19:58:49 +0000 (14:58 -0500)
committerJames Bottomley <jbottomley@parallels.com>
Tue, 17 May 2011 07:01:43 +0000 (11:01 +0400)
Apparently we've been doin it rong for a decade, but only lately do we
run into problems.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/hpsa.h

index 621a153..98c97ca 100644 (file)
@@ -212,6 +212,7 @@ static void SA5_submit_command(struct ctlr_info *h,
        dev_dbg(&h->pdev->dev, "Sending %x, tag = %x\n", c->busaddr,
                c->Header.Tag.lower);
        writel(c->busaddr, h->vaddr + SA5_REQUEST_PORT_OFFSET);
+       (void) readl(h->vaddr + SA5_REQUEST_PORT_OFFSET);
        h->commands_outstanding++;
        if (h->commands_outstanding > h->max_outstanding)
                h->max_outstanding = h->commands_outstanding;