[SCSI] aic94xx: SATA tag mask not set correctly
authorDarrick J. Wong <djwong@us.ibm.com>
Thu, 5 Oct 2006 22:12:37 +0000 (15:12 -0700)
committerJames Bottomley <jejb@mulgrave.localdomain>
Wed, 18 Jul 2007 16:13:59 +0000 (11:13 -0500)
The aic94xx controller has a bitmask establishing which tags are ok to
use with a SATA NCQ disk.  When the queue depth is 32, however, the
expression that is used sets the mask to zero, not 0xFFFFFFFF.
This patch widens the width of the integer so that this case is handled
properly.

Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/aic94xx/aic94xx_dev.c

index c520e5b41fb52288982d73ac2ce46362407938d5..3dce618bf4148c293f4eff51b7f2ac27c1c22277 100644 (file)
@@ -126,7 +126,7 @@ static inline int asd_init_sata(struct domain_device *dev)
                if (w76 & 0x100) /* NCQ? */
                        qdepth = (w75 & 0x1F) + 1;
                asd_ddbsite_write_dword(asd_ha, ddb, SATA_TAG_ALLOC_MASK,
-                                       (1<<qdepth)-1);
+                                       (1ULL<<qdepth)-1);
                asd_ddbsite_write_byte(asd_ha, ddb, NUM_SATA_TAGS, qdepth);
        }
        if (dev->dev_type == SATA_DEV || dev->dev_type == SATA_PM ||