|
@@ -81,7 +81,8 @@ void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)
|
|
start = (loff_t)0xC0000;
|
|
start = (loff_t)0xC0000;
|
|
*size = 0x20000; /* cover C000:0 through E000:0 */
|
|
*size = 0x20000; /* cover C000:0 through E000:0 */
|
|
} else {
|
|
} else {
|
|
- if (res->flags & IORESOURCE_ROM_COPY) {
|
|
|
|
|
|
+ if (res->flags &
|
|
|
|
+ (IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY)) {
|
|
*size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
|
|
*size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
|
|
return (void __iomem *)(unsigned long)
|
|
return (void __iomem *)(unsigned long)
|
|
pci_resource_start(pdev, PCI_ROM_RESOURCE);
|
|
pci_resource_start(pdev, PCI_ROM_RESOURCE);
|
|
@@ -165,7 +166,8 @@ void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size)
|
|
if (!rom)
|
|
if (!rom)
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
|
- if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_SHADOW))
|
|
|
|
|
|
+ if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_SHADOW |
|
|
|
|
+ IORESOURCE_ROM_BIOS_COPY))
|
|
return rom;
|
|
return rom;
|
|
|
|
|
|
res->start = (unsigned long)kmalloc(*size, GFP_KERNEL);
|
|
res->start = (unsigned long)kmalloc(*size, GFP_KERNEL);
|
|
@@ -191,7 +193,7 @@ void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)
|
|
{
|
|
{
|
|
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
|
|
struct resource *res = &pdev->resource[PCI_ROM_RESOURCE];
|
|
|
|
|
|
- if (res->flags & IORESOURCE_ROM_COPY)
|
|
|
|
|
|
+ if (res->flags & (IORESOURCE_ROM_COPY | IORESOURCE_ROM_BIOS_COPY))
|
|
return;
|
|
return;
|
|
|
|
|
|
iounmap(rom);
|
|
iounmap(rom);
|
|
@@ -215,6 +217,7 @@ void pci_remove_rom(struct pci_dev *pdev)
|
|
sysfs_remove_bin_file(&pdev->dev.kobj, pdev->rom_attr);
|
|
sysfs_remove_bin_file(&pdev->dev.kobj, pdev->rom_attr);
|
|
if (!(res->flags & (IORESOURCE_ROM_ENABLE |
|
|
if (!(res->flags & (IORESOURCE_ROM_ENABLE |
|
|
IORESOURCE_ROM_SHADOW |
|
|
IORESOURCE_ROM_SHADOW |
|
|
|
|
+ IORESOURCE_ROM_BIOS_COPY |
|
|
IORESOURCE_ROM_COPY)))
|
|
IORESOURCE_ROM_COPY)))
|
|
pci_disable_rom(pdev);
|
|
pci_disable_rom(pdev);
|
|
}
|
|
}
|