aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/apic.c
diff options
context:
space:
mode:
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. */