diff options
Diffstat (limited to 'drivers/pci/pci-efi.c')
-rw-r--r-- | drivers/pci/pci-efi.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/pci/pci-efi.c b/drivers/pci/pci-efi.c index e1fe11d070..846449c4b0 100644 --- a/drivers/pci/pci-efi.c +++ b/drivers/pci/pci-efi.c @@ -209,15 +209,22 @@ static u8 *acpi_parse_resource(u8 *next, struct resource *out) return next; } +static struct efi_driver efi_pci_driver; + /* EFI already enumerated the bus for us, match our new pci devices with the efi * handles */ static void efi_pci_fixup_dev_parent(struct pci_dev *dev) { - struct efi_pci_priv *priv = host_to_efi_pci(dev->bus->host); + struct efi_pci_priv *priv; struct pci_child *child; struct pci_child_id id; + if (dev->dev.driver != &efi_pci_driver.driver) + return; + + priv = host_to_efi_pci(dev->bus->host); + id.segmentno = priv->protocol->segmentno; id.busno = dev->bus->number; id.devno = PCI_SLOT(dev->devfn); |