On Sat, Sep 10, 2016 10:31 PM, Borislav Petkov wrote: > > On Sat, Sep 10, 2016 at 09:11:30PM +0800, Rui Wang wrote: > > Thanks for the analysis. Looks like acpi_gbl_root_node == 0. It is > > Is ACPI_HANDLE(root_bus->bridge) == ACPI_ROOT_OBJECT? > > Because this is what the code does but I can't see it from the code that the > handle is of type ACPI_ROOT_OBJECT... > I seem to have the clue. It is because ACPI_HANDLE(root_bus->bridge) == NULL. Then this root bridge doesn't have a corresponding ACPI device. In this case we shouldn't call acpi_ioapic_add(). This can be true for some old platforms. If that's the case then the patch below can fix it. Thanks Rui >From b37d806c78e5eea70dbb890c1e3dbb8b7e5038e6 Mon Sep 17 00:00:00 2001 From: Rui Wang <rui.y.wang@xxxxxxxxx> Date: Sat, 10 Sep 2016 10:56:34 -0400 Subject: [PATCH] x86/ioapic: Ignore root bridges without a companion ACPI device Some PCI root bridges don't have a corresponding ACPI device. Don't call acpi_ioapic_add() on these bridges because they can't support ioapic hotplug. Signed-off-by: Rui Wang <rui.y.wang@xxxxxxxxx> --- drivers/pci/setup-bus.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index ec538d3..2b05ac6 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -1852,10 +1852,15 @@ dump: void __init pci_assign_unassigned_resources(void) { struct pci_bus *root_bus; + acpi_handle root_handle; list_for_each_entry(root_bus, &pci_root_buses, node) { pci_assign_unassigned_root_bus_resources(root_bus); - acpi_ioapic_add(ACPI_HANDLE(root_bus->bridge)); + root_handle = ACPI_HANDLE(root_bus->bridge); + + /* make sure the root bridge has a companion ACPI device */ + if (root_handle) + acpi_ioapic_add(root_handle); } } -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html