• Yinghai Lu's avatar
    PCI: Skip attaching driver in device_add() · 58d9a38f
    Yinghai Lu authored
    We want to add PCI devices to the device tree as early as possible but
    delay attaching drivers.
    
    device_add() adds a device to the device hierarchy and (via
    device_attach()) attaches a matching driver and calls its .probe() method.
    We want to separate adding the device to the hierarchy from attaching the
    driver.
    
    This patch does that by adding "match_driver" in struct pci_dev.  When
    false, we return failure from pci_bus_match(), which makes device_attach()
    believe there's no matching driver.
    
    Later, we set "match_driver = true" and call device_attach() again, which
    now attaches the driver and calls its .probe() method.
    
    [bhelgaas: changelog, explicitly init dev->match_driver,
    fold device_attach() call into pci_bus_add_device()]
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    58d9a38f
pci-driver.c 31.1 KB