diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2010-03-30 04:07:14 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-05-04 16:35:11 -0400 |
commit | 4afc51a835d3aeba11c35090f524e05c84586d27 (patch) | |
tree | e7858e2c41b1736a6ea659e2cf6764d1ff3a4686 /arch | |
parent | d464207c4fdd70c2a0febd4f9c58206fa915bb36 (diff) |
x86, ioapic: Simplify probe_nr_irqs_gsi.
Use the global gsi_end value now that all ioapics have
valid gsi numbers instead of a combination of acpi_probe_gsi
and walking all of the ioapics and couting their number of
entries by hand if acpi_probe_gsi gave us an answer we did
not like.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
LKML-Reference: <1269936436-7039-13-git-send-email-ebiederm@xmission.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/mpspec.h | 6 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 23 | ||||
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 17 |
3 files changed, 3 insertions, 43 deletions
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h index 29994f06c7e2..c82868e9f905 100644 --- a/arch/x86/include/asm/mpspec.h +++ b/arch/x86/include/asm/mpspec.h | |||
@@ -105,12 +105,6 @@ extern void mp_config_acpi_legacy_irqs(void); | |||
105 | struct device; | 105 | struct device; |
106 | extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level, | 106 | extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level, |
107 | int active_high_low); | 107 | int active_high_low); |
108 | extern int acpi_probe_gsi(void); | ||
109 | #else /* !CONFIG_ACPI: */ | ||
110 | static inline int acpi_probe_gsi(void) | ||
111 | { | ||
112 | return 0; | ||
113 | } | ||
114 | #endif /* CONFIG_ACPI */ | 108 | #endif /* CONFIG_ACPI */ |
115 | 109 | ||
116 | #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) | 110 | #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 3ee92f28a4b2..07a63ce5811a 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -876,29 +876,6 @@ static int __init acpi_parse_madt_lapic_entries(void) | |||
876 | extern int es7000_plat; | 876 | extern int es7000_plat; |
877 | #endif | 877 | #endif |
878 | 878 | ||
879 | int __init acpi_probe_gsi(void) | ||
880 | { | ||
881 | int idx; | ||
882 | int gsi; | ||
883 | int max_gsi = 0; | ||
884 | |||
885 | if (acpi_disabled) | ||
886 | return 0; | ||
887 | |||
888 | if (!acpi_ioapic) | ||
889 | return 0; | ||
890 | |||
891 | max_gsi = 0; | ||
892 | for (idx = 0; idx < nr_ioapics; idx++) { | ||
893 | gsi = mp_gsi_routing[idx].gsi_end; | ||
894 | |||
895 | if (gsi > max_gsi) | ||
896 | max_gsi = gsi; | ||
897 | } | ||
898 | |||
899 | return max_gsi + 1; | ||
900 | } | ||
901 | |||
902 | static void assign_to_mp_irq(struct mpc_intsrc *m, | 879 | static void assign_to_mp_irq(struct mpc_intsrc *m, |
903 | struct mpc_intsrc *mp_irq) | 880 | struct mpc_intsrc *mp_irq) |
904 | { | 881 | { |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 0d35f46929d1..9f3f6ca86dac 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -3850,22 +3850,11 @@ int __init io_apic_get_redir_entries (int ioapic) | |||
3850 | 3850 | ||
3851 | void __init probe_nr_irqs_gsi(void) | 3851 | void __init probe_nr_irqs_gsi(void) |
3852 | { | 3852 | { |
3853 | int nr = 0; | 3853 | int nr; |
3854 | 3854 | ||
3855 | nr = acpi_probe_gsi(); | 3855 | nr = gsi_end + 1; |
3856 | if (nr > nr_irqs_gsi) { | 3856 | if (nr > nr_irqs_gsi) |
3857 | nr_irqs_gsi = nr; | 3857 | nr_irqs_gsi = nr; |
3858 | } else { | ||
3859 | /* for acpi=off or acpi is not compiled in */ | ||
3860 | int idx; | ||
3861 | |||
3862 | nr = 0; | ||
3863 | for (idx = 0; idx < nr_ioapics; idx++) | ||
3864 | nr += io_apic_get_redir_entries(idx); | ||
3865 | |||
3866 | if (nr > nr_irqs_gsi) | ||
3867 | nr_irqs_gsi = nr; | ||
3868 | } | ||
3869 | 3858 | ||
3870 | printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi); | 3859 | printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi); |
3871 | } | 3860 | } |