summaryrefslogtreecommitdiffstats
path: root/include/clocksource/arm_arch_timer.h
diff options
context:
space:
mode:
authorJulien Thierry <julien.thierry@arm.com>2017-10-13 14:32:55 +0100
committerWill Deacon <will.deacon@arm.com>2017-10-13 18:55:05 +0100
commitec5c8e429d07737ee94ee1fd2ae5029547484194 (patch)
tree8272f13001ee42fc7ba31115a4c2d119a77b27ea /include/clocksource/arm_arch_timer.h
parent611a7bc74ed2dcbab6693c20bb534cfcf15f9d1d (diff)
downloadtalos-obmc-linux-ec5c8e429d07737ee94ee1fd2ae5029547484194.tar.gz
talos-obmc-linux-ec5c8e429d07737ee94ee1fd2ae5029547484194.zip
arm_arch_timer: Expose event stream status
The arch timer configuration for a CPU might get reset after suspending said CPU. In order to reliably use the event stream in the kernel (e.g. for delays), we keep track of the state where we can safely consider the event stream as properly configured. After writing to cntkctl, we issue an ISB to ensure that subsequent delay loops can rely on the event stream being enabled. Signed-off-by: Julien Thierry <julien.thierry@arm.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'include/clocksource/arm_arch_timer.h')
-rw-r--r--include/clocksource/arm_arch_timer.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/clocksource/arm_arch_timer.h b/include/clocksource/arm_arch_timer.h
index cc805b72994a..4e28283e2ec6 100644
--- a/include/clocksource/arm_arch_timer.h
+++ b/include/clocksource/arm_arch_timer.h
@@ -93,6 +93,7 @@ struct arch_timer_mem {
extern u32 arch_timer_get_rate(void);
extern u64 (*arch_timer_read_counter)(void);
extern struct arch_timer_kvm_info *arch_timer_get_kvm_info(void);
+extern bool arch_timer_evtstrm_available(void);
#else
@@ -106,6 +107,11 @@ static inline u64 arch_timer_read_counter(void)
return 0;
}
+static inline bool arch_timer_evtstrm_available(void)
+{
+ return false;
+}
+
#endif
#endif
OpenPOWER on IntegriCloud