• Bjorn Helgaas's avatar
    PCI/sysfs: Find shadow ROM before static attribute initialization · 66d28b21
    Bjorn Helgaas authored
    Ville reported that the sysfs "rom" file for VGA devices disappeared after
    527139d7 ("PCI/sysfs: Convert "rom" to static attribute").
    
    Prior to 527139d7, FINAL fixups, including pci_fixup_video() where we
    find shadow ROMs, were run before pci_create_sysfs_dev_files() created the
    sysfs "rom" file.
    
    After 527139d7, "rom" is a static attribute and is created before FINAL
    fixups are run, so we didn't create "rom" files for shadow ROMs:
    
      acpi_pci_root_add
        ...
          pci_scan_single_device
            pci_device_add
              pci_fixup_video                    # <-- new HEADER fixup
              device_add
                ...
                  if (grp->is_visible())
                    pci_dev_rom_attr_is_visible  # after 527139d7
        pci_bus_add_devices
          pci_bus_add_device
            pci_fixup_device(pci_fixup_final)
              pci_fixup_video                    # <-- previous FINAL fixup
            pci_create_sysfs_dev_files
              if (pci_resource_len(pdev, PCI_ROM_RESOURCE))
                sysfs_create_bin_file("rom")     # before 527139d7
    
    Change pci_fixup_video() to be a HEADER fixup so it runs before sysfs
    static attributes are initialized.
    
    Rename the Loongson pci_fixup_radeon() to pci_fixup_video() and make its
    dmesg logging identical to the others since it is doing the same job.
    
    Link: https://lore.kernel.org/r/YbxqIyrkv3GhZVxx@intel.com
    Fixes: 527139d7 ("PCI/sysfs: Convert "rom" to static attribute")
    Link: https://lore.kernel.org/r/20220126154001.16895-1-helgaas@kernel.orgReported-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: stable@vger.kernel.org			# v5.13+
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Krzysztof Wilczyński <kw@linux.com>
    66d28b21
fixup.c 27.5 KB