diff options
Diffstat (limited to 'arch/ia64/sn/kernel/io_acpi_init.c')
-rw-r--r-- | arch/ia64/sn/kernel/io_acpi_init.c | 17 |
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); |