[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <86802c441003291916u3381aae7r5cd76c754871421@mail.gmail.com>
Date: Mon, 29 Mar 2010 19:16:10 -0700
From: Yinghai Lu <yinghai@...nel.org>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
Cc: "H. Peter Anvin" <hpa@...or.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...e.hu>,
Andrew Morton <akpm@...ux-foundation.org>,
Jesse Barnes <jbarnes@...tuousgeek.org>,
linux-kernel@...r.kernel.org, Thomas Renninger <trenn@...e.de>,
Suresh Siddha <suresh.b.siddha@...el.com>, len.brown@...el.com,
Tony Luck <tony.luck@...el.com>,
Fenghua Yu <fenghua.yu@...el.com>, linux-acpi@...r.kernel.org,
Iranna D Ankad <iranna.ankad@...ibm.com>,
Gary Hade <garyhade@...ibm.com>,
Natalie Protasevich <protasnb@...il.com>
Subject: Re: [PATCH 12/14] x86 ioapic: Simplify probe_nr_irqs_gsi.
On Mon, Mar 29, 2010 at 4:20 PM, Eric W. Biederman
<ebiederm@...ssion.com> wrote:
> From: Eric W. Biederman <ebiederm@...ssion.com>
>
> 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.
>
> This fixes a small bug in probe_nr_irqs_gsi. Previously
> acpi_probe_gsi unnecessarily added 1 to the maximum
> gsi_end value. gsi_end is already one past the end of
> the number of gsi's so the additional increment was
> superfluous.
>
> Signed-off-by: Eric W. Biederman <ebiederm@...ssion.com>
> ---
> arch/x86/include/asm/mpspec.h | 6 ------
> arch/x86/kernel/acpi/boot.c | 23 -----------------------
> 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 29994f0..c82868e 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);
> struct device;
> extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level,
> int active_high_low);
> -extern int acpi_probe_gsi(void);
> -#else /* !CONFIG_ACPI: */
> -static inline int acpi_probe_gsi(void)
> -{
> - return 0;
> -}
> #endif /* CONFIG_ACPI */
>
> #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 9c48e99..0e514a1 100644
> --- a/arch/x86/kernel/acpi/boot.c
> +++ b/arch/x86/kernel/acpi/boot.c
> @@ -875,29 +875,6 @@ static int __init acpi_parse_madt_lapic_entries(void)
> extern int es7000_plat;
> #endif
>
> -int __init acpi_probe_gsi(void)
> -{
> - int idx;
> - int gsi;
> - int max_gsi = 0;
> -
> - if (acpi_disabled)
> - return 0;
> -
> - if (!acpi_ioapic)
> - return 0;
> -
> - max_gsi = 0;
> - for (idx = 0; idx < nr_ioapics; idx++) {
> - gsi = mp_gsi_routing[idx].gsi_end;
> -
> - if (gsi > max_gsi)
> - max_gsi = gsi;
> - }
> -
> - return max_gsi + 1;
> -}
> -
> static void assign_to_mp_irq(struct mpc_intsrc *m,
> struct mpc_intsrc *mp_irq)
> {
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 996cf8f..b57b7a3 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3837,22 +3837,11 @@ int __init io_apic_get_redir_entries (int ioapic)
>
> void __init probe_nr_irqs_gsi(void)
> {
> - int nr = 0;
> + int nr;
>
> - nr = acpi_probe_gsi();
> - if (nr > nr_irqs_gsi) {
> + nr = gsi_end;
you may need +1 here
YH
> + if (nr > nr_irqs_gsi)
> nr_irqs_gsi = nr;
> - } else {
> - /* for acpi=off or acpi is not compiled in */
> - int idx;
> -
> - nr = 0;
> - for (idx = 0; idx < nr_ioapics; idx++)
> - nr += io_apic_get_redir_entries(idx) + 1;
> -
> - if (nr > nr_irqs_gsi)
> - nr_irqs_gsi = nr;
> - }
>
> printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists