• Bjorn Helgaas's avatar
    PCI: add pci_scan_root_bus() that accepts resource list · a2ebb827
    Bjorn Helgaas authored
    "Early" and "header" quirks often use incorrect bus resources because they
    see the default resources assigned by pci_create_bus(), before the
    architecture fixes them up (typically in pcibios_fixup_bus()).  Regions
    reserved by these quirks end up with the wrong parents.
    
    Here's the standard path for scanning a PCI root bus:
    
      pci_scan_bus or pci_scan_bus_parented
        pci_create_bus                     <-- A create with default resources
        pci_scan_child_bus
          pci_scan_slot
            pci_scan_single_device
              pci_scan_device
                pci_setup_device
                  pci_fixup_device(early)  <-- B
              pci_device_add
                pci_fixup_device(header)   <-- C
          pcibios_fixup_bus                <-- D fill in correct resources
    
    Early and header quirks at B and C use the default (incorrect) root bus
    resources rather than those filled in at D.
    
    This patch adds a new pci_scan_root_bus() function that sets the bus
    resources correctly from a supplied list of resources.
    
    I intend to remove pci_scan_bus() and pci_scan_bus_parented() after
    fixing all callers.
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    a2ebb827
probe.c 43.5 KB