aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--arch/x86_64/kernel/apic.c11
-rw-r--r--include/asm-x86_64/apic.h1
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
48int disable_apic_timer __initdata; 48int disable_apic_timer __initdata;
49 49
50/* Local APIC timer works in C2? */
51int local_apic_timer_c2_ok;
52EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok);
53
50static struct resource *ioapic_resources; 54static struct resource *ioapic_resources;
51static struct resource lapic_resource = { 55static 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}
1193early_param("nolapic", setup_nolapic); 1197early_param("nolapic", setup_nolapic);
1194 1198
1199static int __init parse_lapic_timer_c2_ok(char *arg)
1200{
1201 local_apic_timer_c2_ok = 1;
1202 return 0;
1203}
1204early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok);
1205
1195static __init int setup_noapictimer(char *str) 1206static __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
104extern unsigned boot_cpu_id; 104extern unsigned boot_cpu_id;
105extern int local_apic_timer_c2_ok;
105 106
106#endif /* __ASM_APIC_H */ 107#endif /* __ASM_APIC_H */