aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/apic.c
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-09-26 04:52:32 -0400
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 04:52:32 -0400
commit2c8c0e6b8d7700a990da8d24eff767f9ca223b96 (patch)
treeb5477ee2558efff235c483d1619ce892db479d18 /arch/x86_64/kernel/apic.c
parent1a3f239ddf9208f2e52d36fef1c1c4518cbbbabe (diff)
[PATCH] Convert x86-64 to early param
Instead of hackish manual parsing Requires earlier i386 patchkit, but also fixes i386 early_printk again. I removed some obsolete really early parameters which didn't do anything useful. Also made a few parameters that needed it early (mostly oops printing setup) Also removed one panic check that wasn't visible without early console anyways (the early console is now initialized after that panic) This cleans up a lot of code. Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64/kernel/apic.c')
-rw-r--r--arch/x86_64/kernel/apic.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index 496cd1bd2ae5..660602c51f51 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -36,6 +36,7 @@
36#include <asm/idle.h> 36#include <asm/idle.h>
37#include <asm/proto.h> 37#include <asm/proto.h>
38#include <asm/timex.h> 38#include <asm/timex.h>
39#include <asm/apic.h>
39 40
40int apic_verbosity; 41int apic_verbosity;
41int apic_runs_main_timer; 42int apic_runs_main_timer;
@@ -546,18 +547,24 @@ static void apic_pm_activate(void) { }
546 547
547static int __init apic_set_verbosity(char *str) 548static int __init apic_set_verbosity(char *str)
548{ 549{
550 if (str == NULL) {
551 skip_ioapic_setup = 0;
552 ioapic_force = 1;
553 return 0;
554 }
549 if (strcmp("debug", str) == 0) 555 if (strcmp("debug", str) == 0)
550 apic_verbosity = APIC_DEBUG; 556 apic_verbosity = APIC_DEBUG;
551 else if (strcmp("verbose", str) == 0) 557 else if (strcmp("verbose", str) == 0)
552 apic_verbosity = APIC_VERBOSE; 558 apic_verbosity = APIC_VERBOSE;
553 else 559 else {
554 printk(KERN_WARNING "APIC Verbosity level %s not recognised" 560 printk(KERN_WARNING "APIC Verbosity level %s not recognised"
555 " use apic=verbose or apic=debug", str); 561 " use apic=verbose or apic=debug\n", str);
562 return -EINVAL;
563 }
556 564
557 return 1; 565 return 0;
558} 566}
559 567early_param("apic", apic_set_verbosity);
560__setup("apic=", apic_set_verbosity);
561 568
562/* 569/*
563 * Detect and enable local APICs on non-SMP boards. 570 * Detect and enable local APICs on non-SMP boards.
@@ -1078,14 +1085,17 @@ int __init APIC_init_uniprocessor (void)
1078static __init int setup_disableapic(char *str) 1085static __init int setup_disableapic(char *str)
1079{ 1086{
1080 disable_apic = 1; 1087 disable_apic = 1;
1081 return 1; 1088 clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability);
1082} 1089 return 0;
1090}
1091early_param("disableapic", setup_disableapic);
1083 1092
1093/* same as disableapic, for compatibility */
1084static __init int setup_nolapic(char *str) 1094static __init int setup_nolapic(char *str)
1085{ 1095{
1086 disable_apic = 1; 1096 return setup_disableapic(str);
1087 return 1;
1088} 1097}
1098early_param("nolapic", setup_nolapic);
1089 1099
1090static __init int setup_noapictimer(char *str) 1100static __init int setup_noapictimer(char *str)
1091{ 1101{
@@ -1118,11 +1128,5 @@ static __init int setup_apicpmtimer(char *s)
1118} 1128}
1119__setup("apicpmtimer", setup_apicpmtimer); 1129__setup("apicpmtimer", setup_apicpmtimer);
1120 1130
1121/* dummy parsing: see setup.c */
1122
1123__setup("disableapic", setup_disableapic);
1124__setup("nolapic", setup_nolapic); /* same as disableapic, for compatibility */
1125
1126__setup("noapictimer", setup_noapictimer); 1131__setup("noapictimer", setup_noapictimer);
1127 1132
1128/* no "lapic" flag - we only use the lapic when the BIOS tells us so. */