From: Yinghai Lu <Yinghai.Lu@Sun.COM>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
Andrew Morton <akpm@linux-foundation.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH] x86: don't allocate dummy page for wrong madt/mptable
Date: Wed, 20 May 2009 00:45:16 -0700 [thread overview]
Message-ID: <4A13B50C.5080201@sun.com> (raw)
In-Reply-To: <4A1393CD.7080604@kernel.org>
in io_apic_init_mapping, if nr_ioapics > 0, we don't need to check
smp_found_config further.
also don't need to allocate dummy pages if we got wrong mptable/madt.
like bad ioapic address. because skip_ioapic_setup already guard that
later.
[ Impact: save 4k when bad mptable/madt or skip_ioapic_setup ]
Sign-off-by: Yinghai Lu <yinghai@kernel.org>
---
arch/x86/kernel/apic/io_apic.c | 48 +++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 23 deletions(-)
Index: linux-2.6/arch/x86/kernel/apic/io_apic.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic/io_apic.c
+++ linux-2.6/arch/x86/kernel/apic/io_apic.c
@@ -1887,7 +1887,9 @@ __apicdebuginit(int) print_all_ICs(void)
return 0;
print_all_local_APICs();
- print_IO_APIC();
+
+ if (!skip_ioapic_setup && nr_ioapics)
+ print_IO_APIC();
return 0;
}
@@ -3828,6 +3830,9 @@ void __init probe_nr_irqs_gsi(void)
{
int nr = 0;
+ if (skip_ioapic_setup)
+ return;
+
nr = acpi_probe_gsi();
if (nr > nr_irqs_gsi) {
nr_irqs_gsi = nr;
@@ -4139,29 +4144,26 @@ void __init ioapic_init_mappings(void)
struct resource *ioapic_res;
int i;
- ioapic_res = ioapic_setup_resources();
+ if (nr_ioapics < 1 || skip_ioapic_setup)
+ return;
+
for (i = 0; i < nr_ioapics; i++) {
- if (smp_found_config) {
- ioapic_phys = mp_ioapics[i].apicaddr;
-#ifdef CONFIG_X86_32
- if (!ioapic_phys) {
- printk(KERN_ERR
- "WARNING: bogus zero IO-APIC "
- "address found in MPTABLE, "
- "disabling IO/APIC support!\n");
- smp_found_config = 0;
- skip_ioapic_setup = 1;
- goto fake_ioapic_page;
- }
-#endif
- } else {
-#ifdef CONFIG_X86_32
-fake_ioapic_page:
-#endif
- ioapic_phys = (unsigned long)
- alloc_bootmem_pages(PAGE_SIZE);
- ioapic_phys = __pa(ioapic_phys);
+ ioapic_phys = mp_ioapics[i].apicaddr;
+ if (!ioapic_phys) {
+ printk(KERN_ERR
+ "WARNING: bogus zero IO-APIC "
+ "address found in MPTABLE or MADT, "
+ "disabling IO/APIC support!\n");
+ smp_found_config = 0;
+ skip_ioapic_setup = 1;
+ return;
}
+ }
+
+ ioapic_res = ioapic_setup_resources();
+ for (i = 0; i < nr_ioapics; i++) {
+ ioapic_phys = mp_ioapics[i].apicaddr;
+
/*
* when acpi ioapic is used, mp_register_ioapic() map
* ioapic_phys already
@@ -4187,7 +4189,7 @@ static int __init ioapic_insert_resource
struct resource *r = ioapic_resources;
if (!r) {
- if (nr_ioapics > 0) {
+ if (nr_ioapics > 0 && !skip_ioapic_setup) {
printk(KERN_ERR
"IO APIC resources couldn't be allocated.\n");
return -1;
next prev parent reply other threads:[~2009-05-20 7:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-20 5:23 [PATCH] x86: don't map io_apic two times Yinghai Lu
2009-05-20 7:45 ` Yinghai Lu [this message]
2009-05-20 18:34 ` [PATCH, v2] x86: don't allocate dummy page for wrong madt/mptable Yinghai Lu
2009-05-20 7:58 ` [PATCH] x86: don't map io_apic two times Ingo Molnar
2009-05-20 8:03 ` 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=4A13B50C.5080201@sun.com \
--to=yinghai.lu@sun.com \
--cc=akpm@linux-foundation.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.