aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/sn/kernel/io_acpi_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/sn/kernel/io_acpi_init.c')
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index c6216f454ffb..3c7178f5dce8 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -418,7 +418,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
418 void __iomem *addr; 418 void __iomem *addr;
419 struct pcidev_info *pcidev_info = NULL; 419 struct pcidev_info *pcidev_info = NULL;
420 struct sn_irq_info *sn_irq_info = NULL; 420 struct sn_irq_info *sn_irq_info = NULL;
421 size_t size; 421 size_t image_size, size;
422 422
423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) { 423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) {
424 panic("%s: Failure obtaining pcidev_info for %s\n", 424 panic("%s: Failure obtaining pcidev_info for %s\n",
@@ -428,17 +428,16 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) { 428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) {
429 /* 429 /*
430 * A valid ROM image exists and has been shadowed by the 430 * A valid ROM image exists and has been shadowed by the
431 * PROM. Setup the pci_dev ROM resource to point to 431 * PROM. Setup the pci_dev ROM resource with the address
432 * the shadowed copy. 432 * of the shadowed copy, and the actual length of the ROM image.
433 */ 433 */
434 size = dev->resource[PCI_ROM_RESOURCE].end - 434 size = pci_resource_len(dev, PCI_ROM_RESOURCE);
435 dev->resource[PCI_ROM_RESOURCE].start; 435 addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
436 addr = 436 size);
437 ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE], 437 image_size = pci_get_rom_size(addr, size);
438 size);
439 dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr; 438 dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
440 dev->resource[PCI_ROM_RESOURCE].end = 439 dev->resource[PCI_ROM_RESOURCE].end =
441 (unsigned long) addr + size; 440 (unsigned long) addr + image_size - 1;
442 dev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_BIOS_COPY; 441 dev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_BIOS_COPY;
443 } 442 }
444 sn_pci_fixup_slot(dev, pcidev_info, sn_irq_info); 443 sn_pci_fixup_slot(dev, pcidev_info, sn_irq_info);