mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-19 01:26:42 +07:00
[SCSI] aacraid: Use resource_size_t for IO mem pointers and offsets
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>
This commit is contained in:
parent
7e8a74b177
commit
ff08784b41
@ -1052,10 +1052,11 @@ struct aac_dev
|
|||||||
struct adapter_ops a_ops;
|
struct adapter_ops a_ops;
|
||||||
unsigned long fsrev; /* Main driver's revision number */
|
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 */
|
* debug buffer */
|
||||||
|
|
||||||
unsigned base_size, dbg_size; /* Size of
|
resource_size_t base_size, dbg_size; /* Size of
|
||||||
* mapped in region */
|
* mapped in region */
|
||||||
|
|
||||||
struct aac_init *init; /* Holds initialization info to communicate with adapter */
|
struct aac_init *init; /* Holds initialization info to communicate with adapter */
|
||||||
|
@ -1145,11 +1145,11 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
|
|||||||
goto out_disable_pdev;
|
goto out_disable_pdev;
|
||||||
|
|
||||||
shost->irq = pdev->irq;
|
shost->irq = pdev->irq;
|
||||||
shost->base = pci_resource_start(pdev, 0);
|
|
||||||
shost->unique_id = unique_id;
|
shost->unique_id = unique_id;
|
||||||
shost->max_cmd_len = 16;
|
shost->max_cmd_len = 16;
|
||||||
|
|
||||||
aac = (struct aac_dev *)shost->hostdata;
|
aac = (struct aac_dev *)shost->hostdata;
|
||||||
|
aac->base_start = pci_resource_start(pdev, 0);
|
||||||
aac->scsi_host_ptr = shost;
|
aac->scsi_host_ptr = shost;
|
||||||
aac->pdev = pdev;
|
aac->pdev = pdev;
|
||||||
aac->name = aac_driver_template.name;
|
aac->name = aac_driver_template.name;
|
||||||
|
@ -49,14 +49,14 @@ static int aac_nark_ioremap(struct aac_dev * dev, u32 size)
|
|||||||
dev->base = NULL;
|
dev->base = NULL;
|
||||||
return 0;
|
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) |
|
dev->regs.rx = ioremap((u64)pci_resource_start(dev->pdev, 0) |
|
||||||
((u64)pci_resource_start(dev->pdev, 1) << 32),
|
((u64)pci_resource_start(dev->pdev, 1) << 32),
|
||||||
sizeof(struct rx_registers) - sizeof(struct rx_inbound));
|
sizeof(struct rx_registers) - sizeof(struct rx_inbound));
|
||||||
dev->base = NULL;
|
dev->base = NULL;
|
||||||
if (dev->regs.rx == NULL)
|
if (dev->regs.rx == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
dev->base = ioremap(dev->scsi_host_ptr->base, size);
|
dev->base = ioremap(dev->base_start, size);
|
||||||
if (dev->base == NULL) {
|
if (dev->base == NULL) {
|
||||||
iounmap(dev->regs.rx);
|
iounmap(dev->regs.rx);
|
||||||
dev->regs.rx = NULL;
|
dev->regs.rx = NULL;
|
||||||
|
@ -79,7 +79,7 @@ static int aac_rkt_ioremap(struct aac_dev * dev, u32 size)
|
|||||||
iounmap(dev->regs.rkt);
|
iounmap(dev->regs.rkt);
|
||||||
return 0;
|
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)
|
if (dev->base == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
dev->IndexRegs = &dev->regs.rkt->IndexRegs;
|
dev->IndexRegs = &dev->regs.rkt->IndexRegs;
|
||||||
|
@ -471,7 +471,7 @@ static int aac_rx_ioremap(struct aac_dev * dev, u32 size)
|
|||||||
iounmap(dev->regs.rx);
|
iounmap(dev->regs.rx);
|
||||||
return 0;
|
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)
|
if (dev->base == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
dev->IndexRegs = &dev->regs.rx->IndexRegs;
|
dev->IndexRegs = &dev->regs.rx->IndexRegs;
|
||||||
@ -653,7 +653,7 @@ int _aac_rx_init(struct aac_dev *dev)
|
|||||||
name, instance);
|
name, instance);
|
||||||
goto error_iounmap;
|
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_base_mapped = dev->base;
|
||||||
dev->dbg_size = dev->base_size;
|
dev->dbg_size = dev->base_size;
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ static int aac_sa_ioremap(struct aac_dev * dev, u32 size)
|
|||||||
iounmap(dev->regs.sa);
|
iounmap(dev->regs.sa);
|
||||||
return 0;
|
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;
|
return (dev->base == NULL) ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -393,7 +393,7 @@ int aac_sa_init(struct aac_dev *dev)
|
|||||||
name, instance);
|
name, instance);
|
||||||
goto error_iounmap;
|
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_base_mapped = dev->base;
|
||||||
dev->dbg_size = dev->base_size;
|
dev->dbg_size = dev->base_size;
|
||||||
|
|
||||||
|
@ -435,8 +435,7 @@ static int aac_src_ioremap(struct aac_dev *dev, u32 size)
|
|||||||
dev->base = NULL;
|
dev->base = NULL;
|
||||||
if (dev->regs.src.bar1 == NULL)
|
if (dev->regs.src.bar1 == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
dev->base = dev->regs.src.bar0 = ioremap(dev->scsi_host_ptr->base,
|
dev->base = dev->regs.src.bar0 = ioremap(dev->base_start, size);
|
||||||
size);
|
|
||||||
if (dev->base == NULL) {
|
if (dev->base == NULL) {
|
||||||
iounmap(dev->regs.src.bar1);
|
iounmap(dev->regs.src.bar1);
|
||||||
dev->regs.src.bar1 = NULL;
|
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;
|
dev->base = dev->regs.src.bar0 = NULL;
|
||||||
return 0;
|
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)
|
if (dev->base == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
dev->IndexRegs = &((struct src_registers __iomem *)
|
dev->IndexRegs = &((struct src_registers __iomem *)
|
||||||
@ -764,7 +763,7 @@ int aac_srcv_init(struct aac_dev *dev)
|
|||||||
name, instance);
|
name, instance);
|
||||||
goto error_iounmap;
|
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_base_mapped = dev->base;
|
||||||
dev->dbg_size = dev->base_size;
|
dev->dbg_size = dev->base_size;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user