aboutsummaryrefslogtreecommitdiffstats
path: root/include/clocksource/hyperv_timer.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-09-17 15:35:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-09-17 15:35:15 -0400
commit7f2444d38f6bbfa12bc15e2533d8f9daa85ca02b (patch)
tree6506ec79036890edfd9797b001391a350b5ac10f /include/clocksource/hyperv_timer.h
parentc5f12fdb8bd873aa3ffdb79512e6bdac92b257b0 (diff)
parent77b4b5420422fc037d00b8f3f0e89b2262e4ae29 (diff)
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core timer updates from Thomas Gleixner: "Timers and timekeeping updates: - A large overhaul of the posix CPU timer code which is a preparation for moving the CPU timer expiry out into task work so it can be properly accounted on the task/process. An update to the bogus permission checks will come later during the merge window as feedback was not complete before heading of for travel. - Switch the timerqueue code to use cached rbtrees and get rid of the homebrewn caching of the leftmost node. - Consolidate hrtimer_init() + hrtimer_init_sleeper() calls into a single function - Implement the separation of hrtimers to be forced to expire in hard interrupt context even when PREEMPT_RT is enabled and mark the affected timers accordingly. - Implement a mechanism for hrtimers and the timer wheel to protect RT against priority inversion and live lock issues when a (hr)timer which should be canceled is currently executing the callback. Instead of infinitely spinning, the task which tries to cancel the timer blocks on a per cpu base expiry lock which is held and released by the (hr)timer expiry code. - Enable the Hyper-V TSC page based sched_clock for Hyper-V guests resulting in faster access to timekeeping functions. - Updates to various clocksource/clockevent drivers and their device tree bindings. - The usual small improvements all over the place" * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (101 commits) posix-cpu-timers: Fix permission check regression posix-cpu-timers: Always clear head pointer on dequeue hrtimer: Add a missing bracket and hide `migration_base' on !SMP posix-cpu-timers: Make expiry_active check actually work correctly posix-timers: Unbreak CONFIG_POSIX_TIMERS=n build tick: Mark sched_timer to expire in hard interrupt context hrtimer: Add kernel doc annotation for HRTIMER_MODE_HARD x86/hyperv: Hide pv_ops access for CONFIG_PARAVIRT=n posix-cpu-timers: Utilize timerqueue for storage posix-cpu-timers: Move state tracking to struct posix_cputimers posix-cpu-timers: Deduplicate rlimit handling posix-cpu-timers: Remove pointless comparisons posix-cpu-timers: Get rid of 64bit divisions posix-cpu-timers: Consolidate timer expiry further posix-cpu-timers: Get rid of zero checks rlimit: Rewrite non-sensical RLIMIT_CPU comment posix-cpu-timers: Respect INFINITY for hard RTTIME limit posix-cpu-timers: Switch thread group sampling to array posix-cpu-timers: Restructure expiry array posix-cpu-timers: Remove cputime_expires ...
Diffstat (limited to 'include/clocksource/hyperv_timer.h')
-rw-r--r--include/clocksource/hyperv_timer.h8
1 files changed, 3 insertions, 5 deletions
diff --git a/include/clocksource/hyperv_timer.h b/include/clocksource/hyperv_timer.h
index a821deb8ecb2..422f5e5237be 100644
--- a/include/clocksource/hyperv_timer.h
+++ b/include/clocksource/hyperv_timer.h
@@ -28,12 +28,10 @@ extern void hv_stimer_cleanup(unsigned int cpu);
28extern void hv_stimer_global_cleanup(void); 28extern void hv_stimer_global_cleanup(void);
29extern void hv_stimer0_isr(void); 29extern void hv_stimer0_isr(void);
30 30
31#if IS_ENABLED(CONFIG_HYPERV) 31#ifdef CONFIG_HYPERV_TIMER
32extern struct clocksource *hyperv_cs; 32extern struct clocksource *hyperv_cs;
33extern void hv_init_clocksource(void); 33extern void hv_init_clocksource(void);
34#endif /* CONFIG_HYPERV */
35 34
36#ifdef CONFIG_HYPERV_TSCPAGE
37extern struct ms_hyperv_tsc_page *hv_get_tsc_page(void); 35extern struct ms_hyperv_tsc_page *hv_get_tsc_page(void);
38 36
39static inline notrace u64 37static inline notrace u64
@@ -91,7 +89,7 @@ hv_read_tsc_page(const struct ms_hyperv_tsc_page *tsc_pg)
91 return hv_read_tsc_page_tsc(tsc_pg, &cur_tsc); 89 return hv_read_tsc_page_tsc(tsc_pg, &cur_tsc);
92} 90}
93 91
94#else /* CONFIG_HYPERV_TSC_PAGE */ 92#else /* CONFIG_HYPERV_TIMER */
95static inline struct ms_hyperv_tsc_page *hv_get_tsc_page(void) 93static inline struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
96{ 94{
97 return NULL; 95 return NULL;
@@ -102,6 +100,6 @@ static inline u64 hv_read_tsc_page_tsc(const struct ms_hyperv_tsc_page *tsc_pg,
102{ 100{
103 return U64_MAX; 101 return U64_MAX;
104} 102}
105#endif /* CONFIG_HYPERV_TSCPAGE */ 103#endif /* CONFIG_HYPERV_TIMER */
106 104
107#endif 105#endif