All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yhlu.kernel@gmail.com>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Maciej W. Rozycki" <macro@linux-mips.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH] x86: check command line when CONFIG_X86_MPPARSE is not set v2
Date: Fri, 20 Jun 2008 16:11:20 -0700	[thread overview]
Message-ID: <200806201611.21198.yhlu.kernel@gmail.com> (raw)
In-Reply-To: <200806200742.36226.yhlu.kernel@gmail.com>


if acpi=off, acpi=noirq and pci=noacpi, we need to disable apic

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>

---
 arch/x86/kernel/acpi/boot.c |   14 ++++++++++++++
 arch/x86/kernel/apic_32.c   |    2 +-
 arch/x86/kernel/setup.c     |    4 ++++
 arch/x86/kernel/setup_32.c  |    5 +++++
 arch/x86/kernel/setup_64.c  |    9 +++++++++
 include/asm-x86/apic.h      |    6 +++++-
 include/linux/acpi.h        |    6 ++++++
 7 files changed, 44 insertions(+), 2 deletions(-)

Index: linux-2.6/arch/x86/kernel/acpi/boot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/boot.c
+++ linux-2.6/arch/x86/kernel/acpi/boot.c
@@ -1740,6 +1740,20 @@ static int __init parse_pci(char *arg)
 }
 early_param("pci", parse_pci);
 
+int __init acpi_mps_check(void)
+{
+#if defined(CONFIG_X86_LOCAL_APIC) && !defined(CONFIG_X86_MPPARSE)
+/* mptable code is not built-in*/
+	if (acpi_disabled || acpi_noirq) {
+		printk(KERN_WARNING "MPS support code is not built-in.\n"
+		       "Using acpi=off or acpi=noirq or pci=noacpi "
+		       "may have problem\n");
+		return 1;
+	}
+#endif
+	return 0;
+}
+
 #ifdef CONFIG_X86_IO_APIC
 static int __init parse_acpi_skip_timer_override(char *arg)
 {
Index: linux-2.6/arch/x86/kernel/setup_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup_32.c
+++ linux-2.6/arch/x86/kernel/setup_32.c
@@ -689,6 +689,11 @@ void __init setup_arch(char **cmdline_p)
 		early_dump_pci_devices();
 #endif
 
+	if (acpi_mps_check()){
+		enable_local_apic = -1;
+		clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
+	}
+
 	finish_e820_parsing();
 
 	probe_roms();
Index: linux-2.6/arch/x86/kernel/setup_64.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup_64.c
+++ linux-2.6/arch/x86/kernel/setup_64.c
@@ -319,6 +319,11 @@ void __init setup_arch(char **cmdline_p)
 		early_dump_pci_devices();
 #endif
 
+	if (acpi_mps_check()) {
+		disable_apic = 1;
+		clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
+	}
+
 #ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
 	if (init_ohci1394_dma_early)
 		init_ohci1394_dma_on_all_controllers();
@@ -740,6 +745,10 @@ static void __cpuinit early_identify_cpu
 		cpu_devs[c->x86_vendor]->c_early_init(c);
 
 	validate_pat_support(c);
+
+	/* early_param could clear that, but recall get it set again */
+	if (disable_apic)
+		clear_cpu_cap(c, X86_FEATURE_APIC);
 }
 
 /*
Index: linux-2.6/include/linux/acpi.h
===================================================================
--- linux-2.6.orig/include/linux/acpi.h
+++ linux-2.6/include/linux/acpi.h
@@ -82,6 +82,7 @@ char * __acpi_map_table (unsigned long p
 int early_acpi_boot_init(void);
 int acpi_boot_init (void);
 int acpi_boot_table_init (void);
+int acpi_mps_check (void);
 int acpi_numa_init (void);
 
 int acpi_table_init (void);
@@ -250,6 +251,11 @@ static inline int acpi_boot_table_init(v
 	return 0;
 }
 
+static inline int acpi_mps_check(void)
+{
+	return 0;
+}
+
 static inline int acpi_check_resource_conflict(struct resource *res)
 {
 	return 0;
Index: linux-2.6/arch/x86/kernel/setup.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/setup.c
+++ linux-2.6/arch/x86/kernel/setup.c
@@ -161,6 +161,10 @@ void __init setup_per_cpu_areas(void)
 	char *ptr;
 	int cpu;
 
+	/* no processor from mptable or madt */
+	if (!num_processors)
+		num_processors = 1;
+
 #ifdef CONFIG_HOTPLUG_CPU
 	prefill_possible_map();
 #else
Index: linux-2.6/arch/x86/kernel/apic_32.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/apic_32.c
+++ linux-2.6/arch/x86/kernel/apic_32.c
@@ -57,7 +57,7 @@ unsigned long mp_lapic_addr;
  *
  * -1=force-disable, +1=force-enable
  */
-static int enable_local_apic __initdata;
+int enable_local_apic;
 
 /* Local APIC timer verification ok */
 static int local_apic_timer_verify_ok;
Index: linux-2.6/include/asm-x86/apic.h
===================================================================
--- linux-2.6.orig/include/asm-x86/apic.h
+++ linux-2.6/include/asm-x86/apic.h
@@ -39,8 +39,12 @@ extern int apic_verbosity;
 extern int local_apic_timer_c2_ok;
 
 extern int ioapic_force;
-extern int disable_apic;
 
+#ifdef CONFIG_X86_64
+extern int disable_apic;
+#else
+extern int enable_local_apic;
+#endif
 /*
  * Basic functions accessing APICs.
  */

  parent reply	other threads:[~2008-06-20 23:10 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200805041823.57198.yhlu.kernel@gmail.com>
2008-05-06 17:38 ` [PATCH] x86: update mptable Yinghai Lu
2008-05-06 17:41   ` [PATCH] x86: fixed mtrr change WP to WB Yinghai Lu
2008-05-06 17:48     ` H. Peter Anvin
2008-05-06 18:24       ` Yinghai Lu
2008-05-06 18:31         ` H. Peter Anvin
2008-05-06 18:34           ` Yinghai Lu
2008-05-06 18:43             ` H. Peter Anvin
2008-05-06 19:05               ` Yinghai Lu
2008-05-06 19:08                 ` H. Peter Anvin
2008-05-06 19:15                   ` Yinghai Lu
2008-05-07  7:48   ` [PATCH] x86: update mptable v2 Yinghai Lu
2008-05-17  2:32     ` [PATCH] x86: update mptable v3 Yinghai Lu
2008-05-19 15:46       ` Ingo Molnar
2008-05-19 19:35       ` [PATCH] x86: update mptable v4 Yinghai Lu
2008-05-19 19:52         ` [PATCH] x86: update mptable v5 Yinghai Lu
2008-05-25 23:00           ` [PATCH] x86: update mptable v6 Yinghai Lu
2008-06-01 20:17             ` [PATCH] x86: update mptable v7 Yinghai Lu
2008-06-09  2:53               ` [PATCH] x86: update mptable v7 - fix Yinghai Lu
2008-06-09 10:13                 ` Ingo Molnar
2008-06-09 17:51                   ` Yinghai Lu
2008-06-09 18:11                     ` Maciej W. Rozycki
2008-06-09 19:09                     ` Ingo Molnar
2008-06-09 19:38                       ` Yinghai Lu
2008-06-09 19:46                         ` H. Peter Anvin
2008-06-09 19:49                       ` Maciej W. Rozycki
2008-06-18 21:32               ` [PATCH] x86: update mptable fix with no ioapic Yinghai Lu
2008-06-19  0:29                 ` [PATCH] x86: update mptable fix with no ioapic v2 Yinghai Lu
2008-06-19  7:18                   ` [PATCH] x86: let MPS support selectable Yinghai Lu
2008-06-19 12:13                     ` Ingo Molnar
2008-06-19 12:49                       ` Ingo Molnar
2008-06-19 15:10                     ` Maciej W. Rozycki
2008-06-19 17:39                       ` Yinghai Lu
2008-06-19 18:03                         ` Len Brown
2008-06-19 18:48                           ` Maciej W. Rozycki
2008-06-26  9:31                             ` Ingo Molnar
     [not found]                     ` <200806191213.10312.yhlu.kernel@gmail.com>
2008-06-19 19:15                       ` [PATCH] x86: fix compiling when CONFIG_X86_MPPARSE is not set Yinghai Lu
2008-06-20 14:42                         ` [PATCH] x86: check command line " Yinghai Lu
2008-06-20 15:01                           ` Ingo Molnar
2008-06-20 15:04                             ` Yinghai Lu
2008-06-20 15:36                             ` Maciej W. Rozycki
2008-06-20 23:11                           ` Yinghai Lu [this message]
2008-06-21  8:14                             ` [PATCH] x86: clean up init_amd() Yinghai Lu
2008-06-24 12:12                           ` [PATCH] x86: check command line when CONFIG_X86_MPPARSE is not set Pavel Machek
2008-06-26  8:23                             ` Yinghai Lu
     [not found]                       ` <200806200733.31477.yhlu.kernel@gmail.com>
2008-06-20 15:03                         ` [PATCH] x86: simplify x86_mpparse dependency check Ingo Molnar
2008-06-20 15:31                         ` Maciej W. Rozycki
2008-06-19 12:13                   ` [PATCH] x86: update mptable fix with no ioapic v2 Ingo Molnar
2008-06-18 22:18               ` [PATCH] x86: update mptable v7 Len Brown
2008-06-18 22:32                 ` Yinghai Lu
2008-06-19  0:33                   ` Len Brown
2008-06-19  0:49                     ` Yinghai Lu
2008-06-19  4:32                       ` Eric W. Biederman
2008-06-19  5:09                         ` H. Peter Anvin
2008-06-19  5:11                         ` Yinghai Lu
2008-06-19  5:27                         ` Len Brown
2008-06-19  6:37                           ` Eric W. Biederman
2008-06-19  7:31                             ` Yinghai Lu
2008-06-19 18:16                               ` Len Brown
2008-06-20  6:47                                 ` Ingo Molnar
2008-06-20  7:20                                   ` Yinghai Lu
2008-06-20  9:12                                   ` Andi Kleen
2008-06-19  5:20                       ` Len Brown
2008-06-19  6:26                         ` Yinghai Lu
2008-06-19  6:28                           ` H. Peter Anvin
2008-06-19  6:35                             ` 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=200806201611.21198.yhlu.kernel@gmail.com \
    --to=yhlu.kernel@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=macro@linux-mips.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.