From: "Kenji Kaneshige" This patch adds the following new interfaces for I/O xAPIC hotplug. The implementation of these interfaces depends on each architecture. o int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); This new interface is to add a new I/O xAPIC specified by phys_addr and gsi_base pair. phys_addr is the physical address to which the I/O xAPIC is mapped and gsi_base is global system interrupt base of the I/O xAPIC. acpi_register_ioapic returns 0 on success, or negative value on error. o int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); This new interface is to remove a I/O xAPIC specified by gsi_base. acpi_unregister_ioapic returns 0 on success, or negative value on error. Signed-off-by: Kenji Kaneshige Signed-off-by: Andrew Morton --- arch/i386/kernel/acpi/boot.c | 16 ++++++++++++++++ arch/ia64/kernel/acpi.c | 17 +++++++++++++++++ include/linux/acpi.h | 3 +++ 3 files changed, 36 insertions(+) diff -puN arch/i386/kernel/acpi/boot.c~acpi-based-i-o-apic-hot-plug-add-interfaces arch/i386/kernel/acpi/boot.c --- 25/arch/i386/kernel/acpi/boot.c~acpi-based-i-o-apic-hot-plug-add-interfaces 2005-04-28 00:24:32.379955976 -0700 +++ 25-akpm/arch/i386/kernel/acpi/boot.c 2005-04-28 00:24:32.386954912 -0700 @@ -506,6 +506,22 @@ acpi_unmap_lsapic(int cpu) EXPORT_SYMBOL(acpi_unmap_lsapic); #endif /* CONFIG_ACPI_HOTPLUG_CPU */ +int +acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) +{ + /* TBD */ + return -EINVAL; +} +EXPORT_SYMBOL(acpi_register_ioapic); + +int +acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base) +{ + /* TBD */ + return -EINVAL; +} +EXPORT_SYMBOL(acpi_unregister_ioapic); + static unsigned long __init acpi_scan_rsdp ( unsigned long start, diff -puN arch/ia64/kernel/acpi.c~acpi-based-i-o-apic-hot-plug-add-interfaces arch/ia64/kernel/acpi.c --- 25/arch/ia64/kernel/acpi.c~acpi-based-i-o-apic-hot-plug-add-interfaces 2005-04-28 00:24:32.380955824 -0700 +++ 25-akpm/arch/ia64/kernel/acpi.c 2005-04-28 00:24:32.388954608 -0700 @@ -838,4 +838,21 @@ acpi_map_iosapic (acpi_handle handle, u3 return AE_OK; } #endif /* CONFIG_NUMA */ + +int +acpi_register_ioapic (acpi_handle handle, u64 phys_addr, u32 gsi_base) +{ + /* TBD */ + return -EINVAL; +} +EXPORT_SYMBOL(acpi_register_ioapic); + +int +acpi_unregister_ioapic (acpi_handle handle, u32 gsi_base) +{ + /* TBD */ + return -EINVAL; +} +EXPORT_SYMBOL(acpi_unregister_ioapic); + #endif /* CONFIG_ACPI_BOOT */ diff -puN include/linux/acpi.h~acpi-based-i-o-apic-hot-plug-add-interfaces include/linux/acpi.h --- 25/include/linux/acpi.h~acpi-based-i-o-apic-hot-plug-add-interfaces 2005-04-28 00:24:32.382955520 -0700 +++ 25-akpm/include/linux/acpi.h 2005-04-28 00:24:32.389954456 -0700 @@ -403,6 +403,9 @@ int acpi_map_lsapic(acpi_handle handle, int acpi_unmap_lsapic(int cpu); #endif /* CONFIG_ACPI_HOTPLUG_CPU */ +int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); +int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); + extern int acpi_mp_config; extern u32 pci_mmcfg_base_addr; _