diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-04-27 21:01:20 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-28 06:21:17 -0400 |
commit | a2f809b08ae4dddc1015c7dcd8659e5729e45b3e (patch) | |
tree | 319895181d8004eca93606949fac10ef14a4b1b1 /arch | |
parent | 85ac16d033370caf6f48d743c8dc8103700f5cc5 (diff) |
irq: change ACPI GSI APIs to also take a device argument
We want to use dev_to_node() later on, to be aware of the 'home node'
of the GSI in question.
[ Impact: cleanup, prepare the IRQ code to be more NUMA aware ]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Len Brown <lenb@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Len Brown <lenb@kernel.org>
Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-acpi@vger.kernel.org
Cc: linux-ia64@vger.kernel.org
LKML-Reference: <49F65560.20904@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/acpi.c | 5 | ||||
-rw-r--r-- | arch/x86/include/asm/io_apic.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/mpspec.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 8 | ||||
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 3 |
5 files changed, 14 insertions, 10 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 5510317db37b..baec6f00f7f3 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -636,7 +636,7 @@ void __init acpi_numa_arch_fixup(void) | |||
636 | * success: return IRQ number (>=0) | 636 | * success: return IRQ number (>=0) |
637 | * failure: return < 0 | 637 | * failure: return < 0 |
638 | */ | 638 | */ |
639 | int acpi_register_gsi(u32 gsi, int triggering, int polarity) | 639 | int acpi_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity) |
640 | { | 640 | { |
641 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) | 641 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) |
642 | return gsi; | 642 | return gsi; |
@@ -678,7 +678,8 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) | |||
678 | 678 | ||
679 | fadt = (struct acpi_table_fadt *)fadt_header; | 679 | fadt = (struct acpi_table_fadt *)fadt_header; |
680 | 680 | ||
681 | acpi_register_gsi(fadt->sci_interrupt, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW); | 681 | acpi_register_gsi(NULL, fadt->sci_interrupt, ACPI_LEVEL_SENSITIVE, |
682 | ACPI_ACTIVE_LOW); | ||
682 | return 0; | 683 | return 0; |
683 | } | 684 | } |
684 | 685 | ||
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 9d826e436010..07f2913ba5de 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h | |||
@@ -154,8 +154,8 @@ extern int timer_through_8259; | |||
154 | extern int io_apic_get_unique_id(int ioapic, int apic_id); | 154 | extern int io_apic_get_unique_id(int ioapic, int apic_id); |
155 | extern int io_apic_get_version(int ioapic); | 155 | extern int io_apic_get_version(int ioapic); |
156 | extern int io_apic_get_redir_entries(int ioapic); | 156 | extern int io_apic_get_redir_entries(int ioapic); |
157 | extern int io_apic_set_pci_routing(int ioapic, int pin, int irq, | 157 | extern int io_apic_set_pci_routing(struct device *dev, int ioapic, int pin, |
158 | int edge_level, int active_high_low); | 158 | int irq, int edge_level, int active_high_low); |
159 | #endif /* CONFIG_ACPI */ | 159 | #endif /* CONFIG_ACPI */ |
160 | 160 | ||
161 | extern int (*ioapic_renumber_irq)(int ioapic, int irq); | 161 | extern int (*ioapic_renumber_irq)(int ioapic, int irq); |
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h index 642fc7fc8cdc..3ea1f531f532 100644 --- a/arch/x86/include/asm/mpspec.h +++ b/arch/x86/include/asm/mpspec.h | |||
@@ -72,7 +72,9 @@ extern void mp_register_ioapic(int id, u32 address, u32 gsi_base); | |||
72 | extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, | 72 | extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, |
73 | u32 gsi); | 73 | u32 gsi); |
74 | extern void mp_config_acpi_legacy_irqs(void); | 74 | extern void mp_config_acpi_legacy_irqs(void); |
75 | extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low); | 75 | struct device; |
76 | extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level, | ||
77 | int active_high_low); | ||
76 | extern int acpi_probe_gsi(void); | 78 | extern int acpi_probe_gsi(void); |
77 | #ifdef CONFIG_X86_IO_APIC | 79 | #ifdef CONFIG_X86_IO_APIC |
78 | extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin, | 80 | extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin, |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 723989d7f802..6ee96b5530f1 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -522,7 +522,7 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) | |||
522 | * success: return IRQ number (>=0) | 522 | * success: return IRQ number (>=0) |
523 | * failure: return < 0 | 523 | * failure: return < 0 |
524 | */ | 524 | */ |
525 | int acpi_register_gsi(u32 gsi, int triggering, int polarity) | 525 | int acpi_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity) |
526 | { | 526 | { |
527 | unsigned int irq; | 527 | unsigned int irq; |
528 | unsigned int plat_gsi = gsi; | 528 | unsigned int plat_gsi = gsi; |
@@ -539,7 +539,7 @@ int acpi_register_gsi(u32 gsi, int triggering, int polarity) | |||
539 | 539 | ||
540 | #ifdef CONFIG_X86_IO_APIC | 540 | #ifdef CONFIG_X86_IO_APIC |
541 | if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) { | 541 | if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) { |
542 | plat_gsi = mp_register_gsi(gsi, triggering, polarity); | 542 | plat_gsi = mp_register_gsi(dev, gsi, triggering, polarity); |
543 | } | 543 | } |
544 | #endif | 544 | #endif |
545 | acpi_gsi_to_irq(plat_gsi, &irq); | 545 | acpi_gsi_to_irq(plat_gsi, &irq); |
@@ -1158,7 +1158,7 @@ void __init mp_config_acpi_legacy_irqs(void) | |||
1158 | } | 1158 | } |
1159 | } | 1159 | } |
1160 | 1160 | ||
1161 | int mp_register_gsi(u32 gsi, int triggering, int polarity) | 1161 | int mp_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity) |
1162 | { | 1162 | { |
1163 | int ioapic; | 1163 | int ioapic; |
1164 | int ioapic_pin; | 1164 | int ioapic_pin; |
@@ -1253,7 +1253,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity) | |||
1253 | } | 1253 | } |
1254 | } | 1254 | } |
1255 | #endif | 1255 | #endif |
1256 | io_apic_set_pci_routing(ioapic, ioapic_pin, gsi, | 1256 | io_apic_set_pci_routing(dev, ioapic, ioapic_pin, gsi, |
1257 | triggering == ACPI_EDGE_SENSITIVE ? 0 : 1, | 1257 | triggering == ACPI_EDGE_SENSITIVE ? 0 : 1, |
1258 | polarity == ACPI_ACTIVE_HIGH ? 0 : 1); | 1258 | polarity == ACPI_ACTIVE_HIGH ? 0 : 1); |
1259 | return gsi; | 1259 | return gsi; |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 560b887ba27c..d9346622601b 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -3958,7 +3958,8 @@ int __init io_apic_get_version(int ioapic) | |||
3958 | } | 3958 | } |
3959 | #endif | 3959 | #endif |
3960 | 3960 | ||
3961 | int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int polarity) | 3961 | int io_apic_set_pci_routing(struct device *dev, int ioapic, int pin, int irq, |
3962 | int triggering, int polarity) | ||
3962 | { | 3963 | { |
3963 | struct irq_desc *desc; | 3964 | struct irq_desc *desc; |
3964 | struct irq_cfg *cfg; | 3965 | struct irq_cfg *cfg; |