Message ID | 20190603091256.25012-1-anders.roxell@linaro.org |
---|---|
State | New |
Headers | show |
Series | [1/3] clocksource/arm_arch_timer: mark arch_counter_get_* as notrace | expand |
Hi Anders, On 03/06/2019 10:12, Anders Roxell wrote: > When CONFIG_FUNCTION_GRAPH_TRACER is enabled we end up in this circular > call trace since function arch_counter_get_cntvct() isn't marked with no > trace: > > [ 17.914934] Call trace: > [ 17.915211] ftrace_return_to_handler+0x194/0x288 > [ 17.915551] return_to_handler+0x1c/0x38 > [ 17.915855] trace_clock_local+0x38/0x88 > [ 17.916159] function_graph_enter+0xf0/0x258 > [ 17.916465] prepare_ftrace_return+0x60/0x90 > [ 17.916772] ftrace_graph_caller+0x1c/0x24 > [ 17.917093] arch_counter_get_cntvct+0x10/0x30 > [ 17.917417] sched_clock+0x70/0x218 > [ 17.917723] trace_clock_local+0x38/0x88 > [ 17.918026] function_graph_enter+0xf0/0x258 > [ 17.918332] prepare_ftrace_return+0x60/0x90 > [ 17.918649] ftrace_graph_caller+0x1c/0x24 > [ 17.918963] arch_counter_get_cntvct+0x10/0x30 > [ 17.919286] sched_clock+0x70/0x218 > > Rework so that function arch_counter_get_cntvct() is marked with notrace. > > Fixes: 0ea415390cd3 ("clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters") > Signed-off-by: Anders Roxell <anders.roxell@linaro.org> This has already been queued by Daniel, I believe [1]. [1] https://lore.kernel.org/lkml/1558689025-50679-1-git-send-email-julien.thierry@arm.com/ Thanks, M. -- Jazz is not dead. It just smells funny...
Hi Anders, thanks for your patch. As mentioned by Mark I already applied this fix from Julien Thierry. -- Daniel On 03/06/2019 11:23, Marc Zyngier wrote: > Hi Anders, > > > On 03/06/2019 10:12, Anders Roxell wrote: >> When CONFIG_FUNCTION_GRAPH_TRACER is enabled we end up in this circular >> call trace since function arch_counter_get_cntvct() isn't marked with no >> trace: >> >> [ 17.914934] Call trace: >> [ 17.915211] ftrace_return_to_handler+0x194/0x288 >> [ 17.915551] return_to_handler+0x1c/0x38 >> [ 17.915855] trace_clock_local+0x38/0x88 >> [ 17.916159] function_graph_enter+0xf0/0x258 >> [ 17.916465] prepare_ftrace_return+0x60/0x90 >> [ 17.916772] ftrace_graph_caller+0x1c/0x24 >> [ 17.917093] arch_counter_get_cntvct+0x10/0x30 >> [ 17.917417] sched_clock+0x70/0x218 >> [ 17.917723] trace_clock_local+0x38/0x88 >> [ 17.918026] function_graph_enter+0xf0/0x258 >> [ 17.918332] prepare_ftrace_return+0x60/0x90 >> [ 17.918649] ftrace_graph_caller+0x1c/0x24 >> [ 17.918963] arch_counter_get_cntvct+0x10/0x30 >> [ 17.919286] sched_clock+0x70/0x218 >> >> Rework so that function arch_counter_get_cntvct() is marked with notrace. >> >> Fixes: 0ea415390cd3 ("clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters") >> Signed-off-by: Anders Roxell <anders.roxell@linaro.org> > > This has already been queued by Daniel, I believe [1]. > > [1] https://lore.kernel.org/lkml/1558689025-50679-1-git-send-email-julien.thierry@arm.com/ -- <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
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index b2a951a798e2..f4d5bd8fe906 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -149,22 +149,22 @@ u32 arch_timer_reg_read(int access, enum arch_timer_reg reg, return val; } -static u64 arch_counter_get_cntpct_stable(void) +static u64 notrace arch_counter_get_cntpct_stable(void) { return __arch_counter_get_cntpct_stable(); } -static u64 arch_counter_get_cntpct(void) +static u64 notrace arch_counter_get_cntpct(void) { return __arch_counter_get_cntpct(); } -static u64 arch_counter_get_cntvct_stable(void) +static u64 notrace arch_counter_get_cntvct_stable(void) { return __arch_counter_get_cntvct_stable(); } -static u64 arch_counter_get_cntvct(void) +static u64 notrace arch_counter_get_cntvct(void) { return __arch_counter_get_cntvct(); } @@ -947,7 +947,7 @@ bool arch_timer_evtstrm_available(void) return cpumask_test_cpu(raw_smp_processor_id(), &evtstrm_available); } -static u64 arch_counter_get_cntvct_mem(void) +static u64 notrace arch_counter_get_cntvct_mem(void) { u32 vct_lo, vct_hi, tmp_hi;
When CONFIG_FUNCTION_GRAPH_TRACER is enabled we end up in this circular call trace since function arch_counter_get_cntvct() isn't marked with no trace: [ 17.914934] Call trace: [ 17.915211] ftrace_return_to_handler+0x194/0x288 [ 17.915551] return_to_handler+0x1c/0x38 [ 17.915855] trace_clock_local+0x38/0x88 [ 17.916159] function_graph_enter+0xf0/0x258 [ 17.916465] prepare_ftrace_return+0x60/0x90 [ 17.916772] ftrace_graph_caller+0x1c/0x24 [ 17.917093] arch_counter_get_cntvct+0x10/0x30 [ 17.917417] sched_clock+0x70/0x218 [ 17.917723] trace_clock_local+0x38/0x88 [ 17.918026] function_graph_enter+0xf0/0x258 [ 17.918332] prepare_ftrace_return+0x60/0x90 [ 17.918649] ftrace_graph_caller+0x1c/0x24 [ 17.918963] arch_counter_get_cntvct+0x10/0x30 [ 17.919286] sched_clock+0x70/0x218 Rework so that function arch_counter_get_cntvct() is marked with notrace. Fixes: 0ea415390cd3 ("clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters") Signed-off-by: Anders Roxell <anders.roxell@linaro.org> --- drivers/clocksource/arm_arch_timer.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -- 2.20.1