Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / arch / ia64 / sn / kernel / io_acpi_init.c
index 0640739..231234c 100644 (file)
@@ -429,7 +429,8 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
        void __iomem *addr;
        struct pcidev_info *pcidev_info = NULL;
        struct sn_irq_info *sn_irq_info = NULL;
-       size_t image_size, size;
+       struct resource *res;
+       size_t size;
 
        if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) {
                panic("%s:  Failure obtaining pcidev_info for %s\n",
@@ -443,17 +444,20 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
                 * of the shadowed copy, and the actual length of the ROM image.
                 */
                size = pci_resource_len(dev, PCI_ROM_RESOURCE);
-               addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
-                              size);
-               image_size = pci_get_rom_size(dev, addr, size);
-               dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
-               dev->resource[PCI_ROM_RESOURCE].end =
-                                       (unsigned long) addr + image_size - 1;
-               dev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_BIOS_COPY;
+
+               res = &dev->resource[PCI_ROM_RESOURCE];
+
+               pci_disable_rom(dev);
+               if (res->parent)
+                       release_resource(res);
+
+               res->start = pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE];
+               res->end = res->start + size - 1;
+               res->flags = IORESOURCE_MEM | IORESOURCE_ROM_SHADOW |
+                            IORESOURCE_PCI_FIXED;
        }
        sn_pci_fixup_slot(dev, pcidev_info, sn_irq_info);
 }
-
 EXPORT_SYMBOL(sn_acpi_slot_fixup);