diff options
author | Andi Kleen <ak@suse.de> | 2006-02-03 15:50:50 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-04 19:43:13 -0500 |
commit | 73dea47faeb96d54a984b9d7f4de564816966354 (patch) | |
tree | 6b1f090e9071e281367bc106c1b2ab05cb43e459 /include | |
parent | 76b461c21468f41837283b7888d55f1c0671f719 (diff) |
[PATCH] x86_64: Allow to run main time keeping from the local APIC interrupt
Another piece from the no-idle-tick patch.
This can be enabled with the "apicmaintimer" option.
This is mainly useful when the PIT/HPET interrupt is unreliable.
Note there are some systems that are known to stop the APIC
timer in C3. For those it will never work, but this case
should be automatically detected.
It also only works with PM timer right now. When HPET is used
the way the main timer handler computes the delay doesn't work.
It should be a bit more efficient because there is one less
regular interrupt to process on the boot processor.
Requires earlier bugfix from Venkatesh
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86_64/apic.h | 1 | ||||
-rw-r--r-- | include/asm-x86_64/proto.h | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-x86_64/apic.h b/include/asm-x86_64/apic.h index 4f6a4dc455bb..bdbd8935612a 100644 --- a/include/asm-x86_64/apic.h +++ b/include/asm-x86_64/apic.h | |||
@@ -17,6 +17,7 @@ | |||
17 | #define APIC_DEBUG 2 | 17 | #define APIC_DEBUG 2 |
18 | 18 | ||
19 | extern int apic_verbosity; | 19 | extern int apic_verbosity; |
20 | extern int apic_runs_main_timer; | ||
20 | 21 | ||
21 | /* | 22 | /* |
22 | * Define the default level of output to be very little | 23 | * Define the default level of output to be very little |
diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h index d35c7e06f340..c1e2307445d4 100644 --- a/include/asm-x86_64/proto.h +++ b/include/asm-x86_64/proto.h | |||
@@ -49,6 +49,8 @@ extern u32 pmtmr_ioport; | |||
49 | #endif | 49 | #endif |
50 | extern unsigned long long monotonic_base; | 50 | extern unsigned long long monotonic_base; |
51 | extern int sysctl_vsyscall; | 51 | extern int sysctl_vsyscall; |
52 | extern int nohpet; | ||
53 | extern unsigned long vxtime_hz; | ||
52 | 54 | ||
53 | extern void do_softirq_thunk(void); | 55 | extern void do_softirq_thunk(void); |
54 | 56 | ||
@@ -69,6 +71,9 @@ extern void free_bootmem_generic(unsigned long phys, unsigned len); | |||
69 | 71 | ||
70 | extern void load_gs_index(unsigned gs); | 72 | extern void load_gs_index(unsigned gs); |
71 | 73 | ||
74 | extern void stop_timer_interrupt(void); | ||
75 | extern void main_timer_handler(struct pt_regs *regs); | ||
76 | |||
72 | extern unsigned long end_pfn_map; | 77 | extern unsigned long end_pfn_map; |
73 | 78 | ||
74 | extern void show_trace(unsigned long * rsp); | 79 | extern void show_trace(unsigned long * rsp); |