From: "Eric W. Biederman" <ebiederm@xmission.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
linux-kernel@vger.kernel.org, Thomas Renninger <trenn@suse.de>,
Suresh Siddha <suresh.b.siddha@intel.com>,
len.brown@intel.com, Tony Luck <tony.luck@intel.com>,
Fenghua Yu <fenghua.yu@intel.com>,
linux-acpi@vger.kernel.org,
Iranna D Ankad <iranna.ankad@in.ibm.com>,
Gary Hade <garyhade@us.ibm.com>,
Natalie Protasevich <protasnb@gmail.com>,
"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH 09/15] x86 ioapic: Teach mp_register_ioapic to compute a global gsi_end
Date: Tue, 30 Mar 2010 01:07:10 -0700 [thread overview]
Message-ID: <1269936436-7039-9-git-send-email-ebiederm@xmission.com> (raw)
In-Reply-To: <m1oci6qlmr.fsf_-_@fess.ebiederm.org>
From: Eric W. Biederman <ebiederm@xmission.com>
Add the global variable gsi_end and teach mp_register_ioapic
to keep it uptodate as we add more ioapics into the system.
ioapics can only be added early in boot so the code that
runs later can treat gsi_end as a constant.
Remove the have hacks in sfi.c to second guess mp_register_ioapic
by keeping t's own running total of how many gsi's have been seen,
and instead use the gsi_end.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
arch/x86/include/asm/io_apic.h | 1 +
arch/x86/kernel/apic/io_apic.c | 6 ++++++
arch/x86/kernel/sfi.c | 4 +---
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h
index feeaf0d..37b0f2b 100644
--- a/arch/x86/include/asm/io_apic.h
+++ b/arch/x86/include/asm/io_apic.h
@@ -184,6 +184,7 @@ struct mp_ioapic_gsi{
u32 gsi_end;
};
extern struct mp_ioapic_gsi mp_gsi_routing[];
+extern u32 gsi_end;
int mp_find_ioapic(u32 gsi);
int mp_find_ioapic_pin(int ioapic, u32 gsi);
void __init mp_register_ioapic(int id, u32 address, u32 gsi_base);
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 4611c43..71988c5 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -88,6 +88,9 @@ int nr_ioapics;
/* IO APIC gsi routing info */
struct mp_ioapic_gsi mp_gsi_routing[MAX_IO_APICS];
+/* The last gsi number used */
+u32 gsi_end;
+
/* MP IRQ source entries */
struct mpc_intsrc mp_irqs[MAX_IRQ_SOURCES];
@@ -4303,6 +4306,9 @@ void __init mp_register_ioapic(int id, u32 address, u32 gsi_base)
mp_gsi_routing[idx].gsi_end = gsi_base +
io_apic_get_redir_entries(idx) - 1;
+ if (mp_gsi_routing[idx].gsi_end > gsi_end)
+ gsi_end = mp_gsi_routing[idx].gsi_end;
+
printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, "
"GSI %d-%d\n", idx, mp_ioapics[idx].apicid,
mp_ioapics[idx].apicver, mp_ioapics[idx].apicaddr,
diff --git a/arch/x86/kernel/sfi.c b/arch/x86/kernel/sfi.c
index 34e0993..7ded578 100644
--- a/arch/x86/kernel/sfi.c
+++ b/arch/x86/kernel/sfi.c
@@ -81,7 +81,6 @@ static int __init sfi_parse_cpus(struct sfi_table_header *table)
#endif /* CONFIG_X86_LOCAL_APIC */
#ifdef CONFIG_X86_IO_APIC
-static u32 gsi_base;
static int __init sfi_parse_ioapic(struct sfi_table_header *table)
{
@@ -94,8 +93,7 @@ static int __init sfi_parse_ioapic(struct sfi_table_header *table)
pentry = (struct sfi_apic_table_entry *)sb->pentry;
for (i = 0; i < num; i++) {
- mp_register_ioapic(i, pentry->phys_addr, gsi_base);
- gsi_base += io_apic_get_redir_entries(i);
+ mp_register_ioapic(i, pentry->phys_addr, gsi_end + 1);
pentry++;
}
--
1.6.5.2.143.g8cc62
next prev parent reply other threads:[~2010-03-30 8:08 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 1:36 [PATCH 00/10] x86/irq Yinghai Lu
2010-03-22 1:36 ` [PATCH 01/10] irq: move some interrupt arch_* functions into struct irq_chip Yinghai Lu
2010-03-22 1:56 ` Michael Ellerman
2010-03-22 3:32 ` Yinghai Lu
2010-03-23 7:10 ` Paul Mundt
2010-03-24 13:33 ` Ian Campbell
2010-03-22 10:19 ` Thomas Gleixner
2010-03-24 13:32 ` Ian Campbell
2010-03-24 17:44 ` Thomas Gleixner
2010-03-24 19:16 ` Ian Campbell
2010-03-24 21:25 ` Thomas Gleixner
2010-03-22 1:36 ` [PATCH 02/10] x86: fix out of order of gsi - full Yinghai Lu
2010-03-22 11:14 ` Thomas Gleixner
2010-03-22 19:45 ` Yinghai Lu
2010-03-29 13:40 ` Eric W. Biederman
2010-03-29 17:57 ` H. Peter Anvin
2010-03-29 23:19 ` [PATCH 0/14] Start coping gsis < 16 that are not isa irqs Eric W. Biederman
2010-03-29 23:20 ` [PATCH 01/14] x86 acpi/irq: Introduce apci_isa_irq_to_gsi Eric W. Biederman
2010-03-29 23:20 ` [PATCH 02/14] x86 acpi/irq: Teach acpi_get_override_irq to take a gsi not an isa_irq Eric W. Biederman
2010-03-29 23:20 ` [PATCH 03/14] x86 acpi/irq: pci device dev->irq is an isa irq not a gsi Eric W. Biederman
2010-03-29 23:20 ` [PATCH 04/14] x86 acpi/irq: Fix acpi_sci_ioapic_setup so it has both bus_irq and gsi Eric W. Biederman
2010-03-29 23:20 ` [PATCH 05/14] x86 acpi/irq: Generalize mp_config_acpi_legacy_irqs Eric W. Biederman
2010-03-29 23:20 ` [PATCH 06/14] x86 ioapic: Only export mp_find_ioapic and mp_find_ioapic_pin in io_apic.h Eric W. Biederman
2010-03-29 23:20 ` [PATCH 07/14] x86 ioapic: Fix the types of gsi values Eric W. Biederman
2010-03-29 23:20 ` [PATCH 08/14] x86 ioapic: Teach mp_register_ioapic to compute a global gsi_end Eric W. Biederman
2010-03-29 23:20 ` [PATCH 09/14] x86 ioapic: In mpparse use mp_register_ioapic Eric W. Biederman
2010-03-29 23:20 ` [PATCH 10/14] x86 ioapic: Move nr_ioapic_registers calculation to mp_register_ioapic Eric W. Biederman
2010-03-29 23:20 ` [PATCH 11/14] x86 ioapic: Optimize pin_2_irq Eric W. Biederman
2010-03-29 23:20 ` [PATCH 12/14] x86 ioapic: Simplify probe_nr_irqs_gsi Eric W. Biederman
2010-03-30 2:16 ` Yinghai Lu
2010-03-30 4:43 ` Eric W. Biederman
2010-03-30 4:55 ` Yinghai Lu
2010-03-30 5:41 ` Eric W. Biederman
2010-03-29 23:20 ` [PATCH 13/14] x86 acpi/irq: Handle isa irqs that are not identity mapped to gsi's Eric W. Biederman
2010-03-29 23:20 ` [PATCH 14/14] x86 irq: Kill io_apic_renumber_irq Eric W. Biederman
2010-03-30 8:06 ` [PATCH 0/15] Start coping gsis < 16 that are not isa irqs. v2 Eric W. Biederman
2010-03-30 8:07 ` [PATCH 01/15] x86 acpi/irq: Introduce apci_isa_irq_to_gsi Eric W. Biederman
2010-05-05 2:06 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 02/15] x86 acpi/irq: Teach acpi_get_override_irq to take a gsi not an isa_irq Eric W. Biederman
2010-05-05 2:07 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 03/15] x86 acpi/irq: pci device dev->irq is an isa irq not a gsi Eric W. Biederman
2010-05-05 2:07 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 04/15] x86 acpi/irq: Fix acpi_sci_ioapic_setup so it has both bus_irq and gsi Eric W. Biederman
2010-05-05 2:07 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 05/15] x86 acpi/irq: Generalize mp_config_acpi_legacy_irqs Eric W. Biederman
2010-05-05 2:07 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 06/15] x86 ioapic: Only export mp_find_ioapic and mp_find_ioapic_pin in io_apic.h Eric W. Biederman
2010-05-05 2:08 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 07/15] x86 ioapic: Fix io_apic_redir_entries to return the number of entries Eric W. Biederman
2010-05-05 2:08 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 08/15] x86 ioapic: Fix the types of gsi values Eric W. Biederman
2010-05-05 2:08 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` Eric W. Biederman [this message]
2010-05-05 2:09 ` [tip:x86/irq] x86, ioapic: Teach mp_register_ioapic to compute a global gsi_end tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 10/15] x86 ioapic: In mpparse use mp_register_ioapic Eric W. Biederman
2010-05-05 2:09 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 11/15] x86 ioapic: Move nr_ioapic_registers calculation to mp_register_ioapic Eric W. Biederman
2010-05-05 2:09 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 12/15] x86 ioapic: Optimize pin_2_irq Eric W. Biederman
2010-05-05 2:09 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 13/15] x86 ioapic: Simplify probe_nr_irqs_gsi Eric W. Biederman
2010-05-05 2:10 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 14/15] x86 acpi/irq: Handle isa irqs that are not identity mapped to gsi's Eric W. Biederman
2010-05-05 2:10 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-05-05 7:49 ` Yinghai
2010-05-05 8:53 ` [PATCH] x86 acpi/irq: Fix harmless typo Eric W. Biederman
2010-05-05 8:58 ` Ingo Molnar
2010-05-05 9:32 ` [tip:x86/irq] x86, acpi/irq: Handle isa irqs that are not identity mapped to gsi's Eric W. Biederman
2010-06-07 21:05 ` H. Peter Anvin
2010-06-08 22:20 ` Yinghai Lu
2010-05-05 8:56 ` Ingo Molnar
2010-05-05 9:36 ` Eric Biederman
2010-05-05 10:05 ` Ingo Molnar
2010-05-05 20:22 ` [PATCH] x86 acpi/irq: Define gsi_end when X86_IO_APIC is undefined Eric W. Biederman
2010-05-06 6:18 ` Ingo Molnar
2010-05-06 10:07 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-03-30 8:07 ` [PATCH 15/15] x86 irq: Kill io_apic_renumber_irq Eric W. Biederman
2010-05-05 2:10 ` [tip:x86/irq] x86, " tip-bot for Eric W. Biederman
2010-05-03 23:21 ` [PATCH 0/15] Start coping gsis < 16 that are not isa irqs. v2 Eric W. Biederman
2010-04-01 2:02 ` [PATCH 0/14] Start coping gsis < 16 that are not isa irqs Len Brown
2010-04-01 3:31 ` Eric W. Biederman
2010-03-22 1:36 ` [PATCH 03/10] x86: set nr_irqs_gsi only in probe_nr_irqs_gsi Yinghai Lu
2010-03-22 1:36 ` [PATCH 04/10] x86: kill smpboot_hooks.h Yinghai Lu
2010-03-22 13:34 ` Thomas Gleixner
2010-03-22 1:36 ` [PATCH 05/10] x86: use vector_desc instead of vector_irq Yinghai Lu
2010-03-22 13:58 ` Thomas Gleixner
2010-03-22 14:04 ` Eric W. Biederman
2010-03-22 14:16 ` Thomas Gleixner
2010-03-22 1:36 ` [PATCH 06/10] irq: Start the transition of irq_chip methods taking a desc Yinghai Lu
2010-03-22 1:36 ` [PATCH 07/10] x86/irq: use irq_desc *desc with irq_chip Yinghai Lu
2010-03-22 1:36 ` [PATCH 08/10] genericirq: add set_irq_desc_chip/data Yinghai Lu
2010-03-22 1:36 ` [PATCH 09/10] x86/iommu/dmar: update iommu/inter_remapping to use desc Yinghai Lu
2010-03-22 1:36 ` [PATCH 10/10] x86: remove arch_probe_nr_irqs Yinghai Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1269936436-7039-9-git-send-email-ebiederm@xmission.com \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=fenghua.yu@intel.com \
--cc=garyhade@us.ibm.com \
--cc=hpa@zytor.com \
--cc=iranna.ankad@in.ibm.com \
--cc=jbarnes@virtuousgeek.org \
--cc=len.brown@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=protasnb@gmail.com \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=trenn@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®