On Wed, July 27, 2016 4:20 AM Bjorn Helgaas wrote: > On Wed, Jul 27, 2016 at 12:13:14AM +0800, Rui Wang wrote: > > IOAPICs present during system boot aren't added to ioapic_list, thus > > are unable to be hot-removed. Fix it by calling > > acpi_ioapic_add() during root bus enumeration. > > > > Signed-off-by: Rui Wang <rui.y.wang@xxxxxxxxx> > > --- > > drivers/acpi/internal.h | 2 -- > > drivers/acpi/ioapic.c | 7 ++++--- > > drivers/acpi/pci_root.c | 13 ++++++++++++- drivers/pci/setup-bus.c | > > 5 ++++- > > include/linux/acpi.h | 6 ++++++ > > 5 files changed, 26 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index > > 27cc7fe..6d8e67e 100644 > > --- a/drivers/acpi/internal.h > > +++ b/drivers/acpi/internal.h > > @@ -40,10 +40,8 @@ int acpi_sysfs_init(void); void > > acpi_container_init(void); void acpi_memory_hotplug_init(void); > > #ifdef CONFIG_ACPI_HOTPLUG_IOAPIC > > -int acpi_ioapic_add(struct acpi_pci_root *root); int > > acpi_ioapic_remove(struct acpi_pci_root *root); #else -static inline > > int acpi_ioapic_add(struct acpi_pci_root *root) { return 0; } > > It would be nicer if the interface change and header file munging were in a > separate patch so they wouldn't obscure the meat of the change, i.e., the > addition of calls to acpi_ioapic_add(). Sure. I'll split it in a newer version. > > > static inline int acpi_ioapic_remove(struct acpi_pci_root *root) { > > return 0; } #endif #ifdef CONFIG_ACPI_DOCK diff --git > > a/drivers/acpi/ioapic.c b/drivers/acpi/ioapic.c index ccdc8db..0f272e2 > > 100644 > > --- a/drivers/acpi/ioapic.c > > +++ b/drivers/acpi/ioapic.c > > @@ -189,16 +189,17 @@ exit: > > return AE_OK; > > } > > > > -int acpi_ioapic_add(struct acpi_pci_root *root) > > +int acpi_ioapic_add(acpi_handle root_handle) > > { > > acpi_status status, retval = AE_OK; > > > > - status = acpi_walk_namespace(ACPI_TYPE_DEVICE, root->device- > >handle, > > + status = acpi_walk_namespace(ACPI_TYPE_DEVICE, root_handle, > > UINT_MAX, handle_ioapic_add, NULL, > > - root->device->handle, (void **)&retval); > > + root_handle, (void **)&retval); > > > > return ACPI_SUCCESS(status) && ACPI_SUCCESS(retval) ? 0 : - > ENODEV; > > } > > +EXPORT_SYMBOL_GPL(acpi_ioapic_add); > > What loadable module needs to call this? It shouldn't be exported unless > there is such a module. It's called from the ioapic driver which is built-in. I'll remove the export. Thanks Rui -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html