PCI: Remove arch-specific IORESOURCE_ROM_SHADOW size from sysfs
authorBjorn Helgaas <bhelgaas@google.com>
Sat, 12 Mar 2016 11:48:08 +0000 (05:48 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Sat, 12 Mar 2016 12:00:25 +0000 (06:00 -0600)
When pci_create_sysfs_dev_files() created the "rom" sysfs file, it set the
sysfs file size to the actual size of a ROM BAR, or if there was no ROM BAR
but the platform provided a shadow copy in RAM, to 0x20000.  0x20000 is an
arch-specific length that should not be baked into the PCI core.

Every place that sets IORESOURCE_ROM_SHADOW also sets the size of the
PCI_ROM_RESOURCE, so use the resource length always.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pci-sysfs.c

index 95d9e7bd933bc880315d3584033c4ea2ca41a3b9..51d4dadcf552a218d2e5081d766ec46e1e57eb31 100644 (file)
@@ -1356,7 +1356,7 @@ error:
 int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
 {
        int retval;
-       int rom_size = 0;
+       int rom_size;
        struct bin_attribute *attr;
 
        if (!sysfs_initialized)
@@ -1373,12 +1373,8 @@ int __must_check pci_create_sysfs_dev_files(struct pci_dev *pdev)
        if (retval)
                goto err_config_file;
 
-       if (pci_resource_len(pdev, PCI_ROM_RESOURCE))
-               rom_size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
-       else if (pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW)
-               rom_size = 0x20000;
-
        /* If the device has a ROM, try to expose it in sysfs. */
+       rom_size = pci_resource_len(pdev, PCI_ROM_RESOURCE);
        if (rom_size) {
                attr = kzalloc(sizeof(*attr), GFP_ATOMIC);
                if (!attr) {