diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2005-04-28 03:25:58 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-06-28 00:52:44 -0400 |
commit | 0e888adc41ffc02b700ade715c182a17e766af84 (patch) | |
tree | b3d745d7a292213daf107c690ea43e5589397867 /arch/ia64/kernel/acpi.c | |
parent | b1bb248a5d2230a3d8ef42199c742194a8580b15 (diff) |
[PATCH] ACPI based I/O APIC hot-plug: ia64 support
This is an ia64 implementation of acpi_register_ioapic() and
acpi_unregister_ioapic() interfaces.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/ia64/kernel/acpi.c')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index ab798867acdf..cda06f88c66e 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -236,9 +236,7 @@ acpi_parse_iosapic (acpi_table_entry_header *header, const unsigned long end) | |||
236 | if (BAD_MADT_ENTRY(iosapic, end)) | 236 | if (BAD_MADT_ENTRY(iosapic, end)) |
237 | return -EINVAL; | 237 | return -EINVAL; |
238 | 238 | ||
239 | iosapic_init(iosapic->address, iosapic->global_irq_base); | 239 | return iosapic_init(iosapic->address, iosapic->global_irq_base); |
240 | |||
241 | return 0; | ||
242 | } | 240 | } |
243 | 241 | ||
244 | 242 | ||
@@ -772,7 +770,7 @@ EXPORT_SYMBOL(acpi_unmap_lsapic); | |||
772 | 770 | ||
773 | 771 | ||
774 | #ifdef CONFIG_ACPI_NUMA | 772 | #ifdef CONFIG_ACPI_NUMA |
775 | acpi_status __init | 773 | acpi_status __devinit |
776 | acpi_map_iosapic (acpi_handle handle, u32 depth, void *context, void **ret) | 774 | acpi_map_iosapic (acpi_handle handle, u32 depth, void *context, void **ret) |
777 | { | 775 | { |
778 | struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; | 776 | struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; |
@@ -829,16 +827,23 @@ acpi_map_iosapic (acpi_handle handle, u32 depth, void *context, void **ret) | |||
829 | int | 827 | int |
830 | acpi_register_ioapic (acpi_handle handle, u64 phys_addr, u32 gsi_base) | 828 | acpi_register_ioapic (acpi_handle handle, u64 phys_addr, u32 gsi_base) |
831 | { | 829 | { |
832 | /* TBD */ | 830 | int err; |
833 | return -EINVAL; | 831 | |
832 | if ((err = iosapic_init(phys_addr, gsi_base))) | ||
833 | return err; | ||
834 | |||
835 | #if CONFIG_ACPI_NUMA | ||
836 | acpi_map_iosapic(handle, 0, NULL, NULL); | ||
837 | #endif /* CONFIG_ACPI_NUMA */ | ||
838 | |||
839 | return 0; | ||
834 | } | 840 | } |
835 | EXPORT_SYMBOL(acpi_register_ioapic); | 841 | EXPORT_SYMBOL(acpi_register_ioapic); |
836 | 842 | ||
837 | int | 843 | int |
838 | acpi_unregister_ioapic (acpi_handle handle, u32 gsi_base) | 844 | acpi_unregister_ioapic (acpi_handle handle, u32 gsi_base) |
839 | { | 845 | { |
840 | /* TBD */ | 846 | return iosapic_remove(gsi_base); |
841 | return -EINVAL; | ||
842 | } | 847 | } |
843 | EXPORT_SYMBOL(acpi_unregister_ioapic); | 848 | EXPORT_SYMBOL(acpi_unregister_ioapic); |
844 | 849 | ||