• Rafael J. Wysocki's avatar
    ACPI: Change the ordering of PCI root bridge driver registrarion · 92ef2a25
    Rafael J. Wysocki authored
    Instead of running acpi_pci_root_init() from a separate subsys
    initcall, call it directly from acpi_scan_init() before scanning the
    ACPI namespace for the first time, so that the PCI root bridge
    driver's .add() routine, acpi_pci_root_start(), is always run
    before binding ACPI drivers or attaching "companion" device objects
    to struct acpi_device objects below the root bridge's device node in
    the ACPI namespace.
    
    The first, simpler reason for doing this is that it makes the
    situation during boot more similar to the situation during hotplug,
    in which the ACPI PCI root bridge driver is always present.
    
    The second reason is that acpi_pci_root_init() causes struct pci_dev
    objects to be created for all PCI devices below the bridge and
    these objects may be necessary for whatever is done with the other
    ACPI device nodes in that namespace scope.  For example, devices
    created by acpi_create_platform_device() sometimes may need to be
    added to the device hierarchy as children of PCI bridges.  For this
    purpose, however, the struct pci_dev objects representing those
    bridges need to exist before the platform devices in question are
    registered.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
    Acked-by: default avatarToshi Kani <toshi.kani@hp.com>
    92ef2a25
pci_root.c 18.7 KB