diff options
Diffstat (limited to 'arch/x86/pci/acpi.c')
-rw-r--r-- | arch/x86/pci/acpi.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index d93963340c3c..14a63ed6fe09 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -482,9 +482,16 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) | |||
482 | 482 | ||
483 | int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) | 483 | int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) |
484 | { | 484 | { |
485 | struct pci_sysdata *sd = bridge->bus->sysdata; | 485 | /* |
486 | 486 | * We pass NULL as parent to pci_create_root_bus(), so if it is not NULL | |
487 | ACPI_COMPANION_SET(&bridge->dev, sd->companion); | 487 | * here, pci_create_root_bus() has been called by someone else and |
488 | * sysdata is likely to be different from what we expect. Let it go in | ||
489 | * that case. | ||
490 | */ | ||
491 | if (!bridge->dev.parent) { | ||
492 | struct pci_sysdata *sd = bridge->bus->sysdata; | ||
493 | ACPI_COMPANION_SET(&bridge->dev, sd->companion); | ||
494 | } | ||
488 | return 0; | 495 | return 0; |
489 | } | 496 | } |
490 | 497 | ||