diff options
-rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/apic.c | 11 | ||||
-rw-r--r-- | include/asm-x86_64/apic.h | 1 |
3 files changed, 13 insertions, 1 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 09640a8f7ceb..ef2ffded1392 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -780,7 +780,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
780 | lapic [IA-32,APIC] Enable the local APIC even if BIOS | 780 | lapic [IA-32,APIC] Enable the local APIC even if BIOS |
781 | disabled it. | 781 | disabled it. |
782 | 782 | ||
783 | lapic_timer_c2_ok [IA-32,APIC] trust the local apic timer in | 783 | lapic_timer_c2_ok [IA-32,x86-64,APIC] trust the local apic timer in |
784 | C2 power state. | 784 | C2 power state. |
785 | 785 | ||
786 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip | 786 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip |
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index 723417d924c0..46acf4f2f1ec 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -47,6 +47,10 @@ int apic_calibrate_pmtmr __initdata; | |||
47 | 47 | ||
48 | int disable_apic_timer __initdata; | 48 | int disable_apic_timer __initdata; |
49 | 49 | ||
50 | /* Local APIC timer works in C2? */ | ||
51 | int local_apic_timer_c2_ok; | ||
52 | EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); | ||
53 | |||
50 | static struct resource *ioapic_resources; | 54 | static struct resource *ioapic_resources; |
51 | static struct resource lapic_resource = { | 55 | static struct resource lapic_resource = { |
52 | .name = "Local APIC", | 56 | .name = "Local APIC", |
@@ -1192,6 +1196,13 @@ static __init int setup_nolapic(char *str) | |||
1192 | } | 1196 | } |
1193 | early_param("nolapic", setup_nolapic); | 1197 | early_param("nolapic", setup_nolapic); |
1194 | 1198 | ||
1199 | static int __init parse_lapic_timer_c2_ok(char *arg) | ||
1200 | { | ||
1201 | local_apic_timer_c2_ok = 1; | ||
1202 | return 0; | ||
1203 | } | ||
1204 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); | ||
1205 | |||
1195 | static __init int setup_noapictimer(char *str) | 1206 | static __init int setup_noapictimer(char *str) |
1196 | { | 1207 | { |
1197 | if (str[0] != ' ' && str[0] != 0) | 1208 | if (str[0] != ' ' && str[0] != 0) |
diff --git a/include/asm-x86_64/apic.h b/include/asm-x86_64/apic.h index e81d0f289f0b..7cfb39cbd918 100644 --- a/include/asm-x86_64/apic.h +++ b/include/asm-x86_64/apic.h | |||
@@ -102,5 +102,6 @@ void switch_ipi_to_APIC_timer(void *cpumask); | |||
102 | #define ARCH_APICTIMER_STOPS_ON_C3 1 | 102 | #define ARCH_APICTIMER_STOPS_ON_C3 1 |
103 | 103 | ||
104 | extern unsigned boot_cpu_id; | 104 | extern unsigned boot_cpu_id; |
105 | extern int local_apic_timer_c2_ok; | ||
105 | 106 | ||
106 | #endif /* __ASM_APIC_H */ | 107 | #endif /* __ASM_APIC_H */ |