[SCSI] aacraid: Use resource_size_t for IO mem pointers and offsets
authorBen Collins <bcollins@ubuntu.com>
Mon, 11 Jun 2012 18:05:02 +0000 (14:05 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:43 +0000 (08:58 +0100)
This also stops using the "legacy crap" in Scsi_Host (shost->base is an
unsigned long).

This affected 32-bit systems that have 64-bit resource sizes, causing the
IO address to be truncated.

Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Acked-by: Achim Leubner <Achim_Leubner@pmc-sierra.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/linit.c
drivers/scsi/aacraid/nark.c
drivers/scsi/aacraid/rkt.c
drivers/scsi/aacraid/rx.c
drivers/scsi/aacraid/sa.c
drivers/scsi/aacraid/src.c

index 3fcf62724fadaf227583fa4c881472687425b107..6ab32db73bb6fc140ff88b43745cfe393ce1a91f 100644 (file)
@@ -1052,10 +1052,11 @@ struct aac_dev
        struct adapter_ops      a_ops;
        unsigned long           fsrev;          /* Main driver's revision number */
 
-       unsigned long           dbg_base;       /* address of UART
+       resource_size_t         base_start;     /* main IO base */
+       resource_size_t         dbg_base;       /* address of UART
                                                 * debug buffer */
 
-       unsigned                base_size, dbg_size;    /* Size of
+       resource_size_t         base_size, dbg_size;    /* Size of
                                                         *  mapped in region */
 
        struct aac_init         *init;          /* Holds initialization info to communicate with adapter */
index 0d279c445a30c3ceb92d8e00dbd7cbcf190f2cc6..fdfc4be9c7c68a6328a20c5bdc0696cbd0c02c69 100644 (file)
@@ -1145,11 +1145,11 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
                goto out_disable_pdev;
 
        shost->irq = pdev->irq;
-       shost->base = pci_resource_start(pdev, 0);
        shost->unique_id = unique_id;
        shost->max_cmd_len = 16;
 
        aac = (struct aac_dev *)shost->hostdata;
+       aac->base_start = pci_resource_start(pdev, 0);
        aac->scsi_host_ptr = shost;
        aac->pdev = pdev;
        aac->name = aac_driver_template.name;
index f397d21a0c06c78cf96be6a2b1f4f58fa8e2cf83..6c53b1d8b2badc6070a7a2d5cb3f13b42cd47fac 100644 (file)
@@ -49,14 +49,14 @@ static int aac_nark_ioremap(struct aac_dev * dev, u32 size)
                dev->base = NULL;
                return 0;
        }
-       dev->scsi_host_ptr->base = pci_resource_start(dev->pdev, 2);
+       dev->base_start = pci_resource_start(dev->pdev, 2);
        dev->regs.rx = ioremap((u64)pci_resource_start(dev->pdev, 0) |
          ((u64)pci_resource_start(dev->pdev, 1) << 32),
          sizeof(struct rx_registers) - sizeof(struct rx_inbound));
        dev->base = NULL;
        if (dev->regs.rx == NULL)
                return -1;
-       dev->base = ioremap(dev->scsi_host_ptr->base, size);
+       dev->base = ioremap(dev->base_start, size);
        if (dev->base == NULL) {
                iounmap(dev->regs.rx);
                dev->regs.rx = NULL;
index be44de92429a9325d7c04bf98019083bab5ecc78..7d8013feeddea4d39d9d821332a1a9a4bfd9e526 100644 (file)
@@ -79,7 +79,7 @@ static int aac_rkt_ioremap(struct aac_dev * dev, u32 size)
                iounmap(dev->regs.rkt);
                return 0;
        }
-       dev->base = dev->regs.rkt = ioremap(dev->scsi_host_ptr->base, size);
+       dev->base = dev->regs.rkt = ioremap(dev->base_start, size);
        if (dev->base == NULL)
                return -1;
        dev->IndexRegs = &dev->regs.rkt->IndexRegs;
index b029c7cc785b2262d8d17f771568253c4373dc78..dada38aeacc090f73321c871f8238a11da7c7843 100644 (file)
@@ -471,7 +471,7 @@ static int aac_rx_ioremap(struct aac_dev * dev, u32 size)
                iounmap(dev->regs.rx);
                return 0;
        }
-       dev->base = dev->regs.rx = ioremap(dev->scsi_host_ptr->base, size);
+       dev->base = dev->regs.rx = ioremap(dev->base_start, size);
        if (dev->base == NULL)
                return -1;
        dev->IndexRegs = &dev->regs.rx->IndexRegs;
@@ -653,7 +653,7 @@ int _aac_rx_init(struct aac_dev *dev)
                        name, instance);
                goto error_iounmap;
        }
-       dev->dbg_base = dev->scsi_host_ptr->base;
+       dev->dbg_base = dev->base_start;
        dev->dbg_base_mapped = dev->base;
        dev->dbg_size = dev->base_size;
 
index beb533630d4b329588e09582b533db01e2285412..2244f315f33b6190118d5348e3bc58e2213db472 100644 (file)
@@ -305,7 +305,7 @@ static int aac_sa_ioremap(struct aac_dev * dev, u32 size)
                iounmap(dev->regs.sa);
                return 0;
        }
-       dev->base = dev->regs.sa = ioremap(dev->scsi_host_ptr->base, size);
+       dev->base = dev->regs.sa = ioremap(dev->base_start, size);
        return (dev->base == NULL) ? -1 : 0;
 }
 
@@ -393,7 +393,7 @@ int aac_sa_init(struct aac_dev *dev)
                        name, instance);
                goto error_iounmap;
        }
-       dev->dbg_base = dev->scsi_host_ptr->base;
+       dev->dbg_base = dev->base_start;
        dev->dbg_base_mapped = dev->base;
        dev->dbg_size = dev->base_size;
 
index 76282063630434b8ffddaeb840f0760d2d3618ab..27a3e77de17f701e8636c0361aa805802c406eb3 100644 (file)
@@ -435,8 +435,7 @@ static int aac_src_ioremap(struct aac_dev *dev, u32 size)
        dev->base = NULL;
        if (dev->regs.src.bar1 == NULL)
                return -1;
-       dev->base = dev->regs.src.bar0 = ioremap(dev->scsi_host_ptr->base,
-                               size);
+       dev->base = dev->regs.src.bar0 = ioremap(dev->base_start, size);
        if (dev->base == NULL) {
                iounmap(dev->regs.src.bar1);
                dev->regs.src.bar1 = NULL;
@@ -459,7 +458,7 @@ static int aac_srcv_ioremap(struct aac_dev *dev, u32 size)
                dev->base = dev->regs.src.bar0 = NULL;
                return 0;
        }
-       dev->base = dev->regs.src.bar0 = ioremap(dev->scsi_host_ptr->base, size);
+       dev->base = dev->regs.src.bar0 = ioremap(dev->base_start, size);
        if (dev->base == NULL)
                return -1;
        dev->IndexRegs = &((struct src_registers __iomem *)
@@ -764,7 +763,7 @@ int aac_srcv_init(struct aac_dev *dev)
                        name, instance);
                goto error_iounmap;
        }
-       dev->dbg_base = dev->scsi_host_ptr->base;
+       dev->dbg_base = dev->base_start;
        dev->dbg_base_mapped = dev->base;
        dev->dbg_size = dev->base_size;