pci_register_driver() (include/linux/pci.h)
-->pci_register_driver() (drivers/pci/pci-driver.c)
-->driver_register() (drivers/base/driver.c)
-->bus_add_driver (drivers/base/driver.c)
-->driver_attach() (drivers/base/dd.c)
-->bus_for_each_dev __driver_attach() (drivers/base/dd.c)
-->driver_match_device()
pci_bus_match
driver_match_device()
-->pci_bus_match (drivers/pci/pci-driver.c)
-->pci_match_device() (drivers/pci/pci-driver.c)
-->pci_match_id() (drivers/pci/pci-driver.c)
-->pci_match_one_device (drivers/pci/pci.h)
整个驱动的注册后触发使能的过程如上。这里核心位于bus_for_each_dev
int bus_for_each_dev(struct bus_type *bus, struct device *start,
void *data, int (*fn)(struct device *, void *))
{
struct klist_iter i;
struct device *dev;
int error = 0;
if (!bus || !bus->p)
retu