clocksource: arm_arch_timer: control the evtstrm via the cmdline
PATCH 1/1 clocksource: arm_arch_timer: control the evtstrm via the cmdline
Disabling the eventstream can be useful for both remotely debugging a deployed production system and development of code using WFE-based polling loops. Whilst this can currently be controlled via a Kconfig option (CONFIG_ARM_ARCH_TIMER_EVTSTREAM), it's often desirable to toggle the feature on the command line, so this patch adds a new command-line option ("clocksource.arm_arch_timer.evtstrm") to do just that. The default behaviour is determined based on CONFIG_ARM_ARCH_TIMER_EVTSTREAM.
--- Documentation/kernel-parameters.txt | 8 ++++++++ drivers/clocksource/Kconfig | 12 +++++++----- drivers/clocksource/arm_arch_timer.c | 10 +++++++++- 3 files changed, 24 insertions(+), 6 deletions(-)
Documentation/kernel-parameters.txt +8 -0
@@ -687,6 +687,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. [SPARC64] tick [X86-64] hpet,tsc + clocksource.arm_arch_timer.evtstrm= + [ARM,ARM64] + Format: <bool> + Enable/disable the eventstream feature of the ARM + architected timer so that code using WFE-based polling + loops can be debugged more effectively on production + systems. + clearcpuid=BITNUM [X86] Disable CPUID feature X for the kernel. See arch/x86/include/asm/cpufeatures.h for the valid bit
drivers/clocksource/Kconfig +7 -5
@@ -208,14 +208,16 @@ config ARM_ARCH_TIMER select CLKSRC_ACPI if ACPI config ARM_ARCH_TIMER_EVTSTREAM - bool "Support for ARM architected timer event stream generation" + bool "Enable ARM architected timer event stream generation by default" default y if ARM_ARCH_TIMER depends on ARM_ARCH_TIMER help - This option enables support for event stream generation based on - the ARM architected timer. It is used for waking up CPUs executing - the wfe instruction at a frequency represented as a power-of-2 - divisor of the clock rate. + This option enables support by default for event stream generation + based on the ARM architected timer. It is used for waking up CPUs + executing the wfe instruction at a frequency represented as a + power-of-2 divisor of the clock rate. The behaviour can also be + overridden on the command line using the + clocksource.arm_arch_timer.evtstream parameter. The main use of the event stream is wfe-based timeouts of userspace locking implementations. It might also be useful for imposing timeout on wfe to safeguard against any programming errors in case an expected
drivers/clocksource/arm_arch_timer.c +9 -1
@@ -79,6 +79,14 @@ static enum ppi_nr arch_timer_uses_ppi = VIRT_PPI;static bool arch_timer_c3stop;static bool arch_timer_mem_use_virtual; +static bool evtstrm_enable =IS_ENABLED (CONFIG_ARM_ARCH_TIMER_EVTSTREAM ); + +static int __init early_evtstrm_cfg (char *buf) +{ +return strtobool (buf, &evtstrm_enable); +} +early_param ("clocksource.arm_arch_timer.evtstrm" , early_evtstrm_cfg); +/* * Architected system timer support. */
@@ -372,7 +380,7 @@ static int arch_timer_setup(struct clock_event_device *clk)enable_percpu_irq (arch_timer_ppi[PHYS_NONSECURE_PPI ],0 );arch_counter_set_user_access (); -if (IS_ENABLED (CONFIG_ARM_ARCH_TIMER_EVTSTREAM )) +if (evtstrm_enable)arch_timer_configure_evtstream ();return 0 ;
Signature · 1 line
2.1.4
PATCH 1/1 clocksource: arm_arch_timer: control the evtstrm via the cmdline
Quoted 8 lines · Will Deacon
Disabling the eventstream can be useful for both remotely debugging a deployed production system and development of code using WFE-based polling loops. Whilst this can currently be controlled via a
Kconfigoption (CONFIG_ARM_ARCH_TIMER_EVTSTREAM), it's often desirable to toggle the feature on the command line, so this patch adds a new command-line option ("clocksource.arm_arch_timer.evtstrm") to do just that. The default behaviour is determined based onCONFIG_ARM_ARCH_TIMER_EVTSTREAM.
Quoted 4 lines
Cc Marc Zyngier <[email protected]>Cc Mark Rutland <[email protected]>Signed-off-by Will Deacon <[email protected]>---
Sounds good for me. I will take it through my tree.
By the way, I would like to do some cleanups in the Kconfig and consistently change the Kconfig options to be silent without the COMPILE_TEST option.
I am wondering if we can just remove the ARM_ARCH_TIMER_EVTSTREAM option with this patch applied and always enable it by default (like what is done today).
-- Daniel
Signature · 5 lines
<http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog