From: Lifted from http://bugzilla.kernel.org/show_bug.cgi?id=7145 PCI Bus Topology: [CPU] [CPU] [CPU] [CPU] | |BUS | | BUS --+--+---+--- --+--+--+------ | | [Root Bridge]*1-----[Root Bridge]*1 | | \ \ [Bridge] | [PCI-e slot] [PCI-e slot] | | [PCI-e slot] | \ | [PCI-e slot] | | [PCI Bridge] | \ | [PCI-X slot] | [PCI-X slot] *1: PCI Express Root Bridge. I could not get correct PCI Express BUS number from the structure of acpi_object_extra. I always get zero as BUS number regardless of BUS location. I found that there is incorrect comparison with _HID (PNP0A08) in acpi/events/evrgnini.c and PCI Express _BBN method always fail. Therefore, we get always get zero as PCI Express bus number. I suggest the following patch. Cc: "Brown, Len" Cc: Signed-off-by: Andrew Morton --- drivers/acpi/events/evrgnini.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/acpi/events/evrgnini.c~fix-incorrect-handling-of-pci-express-root-bridge-_hid drivers/acpi/events/evrgnini.c --- a/drivers/acpi/events/evrgnini.c~fix-incorrect-handling-of-pci-express-root-bridge-_hid +++ a/drivers/acpi/events/evrgnini.c @@ -225,12 +225,12 @@ acpi_ev_pci_config_region_setup(acpi_han if (! (ACPI_STRNCMP (object_hID.value, PCI_ROOT_HID_STRING, - sizeof(PCI_ROOT_HID_STRING)) + sizeof(PCI_ROOT_HID_STRING))) || !(ACPI_STRNCMP (object_hID.value, PCI_EXPRESS_ROOT_HID_STRING, - sizeof(PCI_EXPRESS_ROOT_HID_STRING))))) + sizeof(PCI_EXPRESS_ROOT_HID_STRING)))) { /* Install a handler for this PCI root bridge */ _