mirror of
https://github.com/torvalds/linux.git
synced 2026-08-17 04:50:03 +02:00
When enabling ftrace graph tracer, it gets the tracing clock in
ftrace_push_return_trace(). Eventually, it invokes riscv_sched_clock()
to get the clock value. If riscv_sched_clock() isn't marked with
'notrace', it will call ftrace_push_return_trace() and cause infinite
loop.
The result of failure as follow:
command: echo function_graph >current_tracer
[ 46.176787] Unable to handle kernel paging request at virtual address ffffffe04fb38c48
[ 46.177309] Oops [#1]
[ 46.177478] Modules linked in:
[ 46.177770] CPU: 0 PID: 256 Comm: $d Not tainted 5.5.0-rc1 #47
[ 46.177981] epc: ffffffe00035e59a ra : ffffffe00035e57e sp : ffffffe03a7569b0
[ 46.178216] gp : ffffffe000d29b90 tp : ffffffe03a756180 t0 : ffffffe03a756968
[ 46.178430] t1 : ffffffe00087f408 t2 : ffffffe03a7569a0 s0 : ffffffe03a7569f0
[ 46.178643] s1 : ffffffe00087f408 a0 : 0000000ac054cda4 a1 : 000000000087f411
[ 46.178856] a2 : 0000000ac054cda4 a3 : 0000000000373ca0 a4 : ffffffe04fb38c48
[ 46.179099] a5 : 00000000153e22a8 a6 : 00000000005522ff a7 : 0000000000000005
[ 46.179338] s2 : ffffffe03a756a90 s3 : ffffffe00032811c s4 : ffffffe03a756a58
[ 46.179570] s5 : ffffffe000d29fe0 s6 : 0000000000000001 s7 : 0000000000000003
[ 46.179809] s8 : 0000000000000003 s9 : 0000000000000002 s10: 0000000000000004
[ 46.180053] s11: 0000000000000000 t3 : 0000003fc815749c t4 : 00000000000efc90
[ 46.180293] t5 : ffffffe000d29658 t6 : 0000000000040000
[ 46.180482] status: 0000000000000100 badaddr: ffffffe04fb38c48 cause: 000000000000000f
Signed-off-by: Zong Li <zong.li@sifive.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
[paul.walmsley@sifive.com: cleaned up patch description]
Fixes:
|
||
|---|---|---|
| .. | ||
| acpi_pm.c | ||
| arc_timer.c | ||
| arm_arch_timer.c | ||
| arm_global_timer.c | ||
| armv7m_systick.c | ||
| asm9260_timer.c | ||
| bcm_kona_timer.c | ||
| bcm2835_timer.c | ||
| clksrc_st_lpc.c | ||
| clksrc-dbx500-prcmu.c | ||
| clps711x-timer.c | ||
| dummy_timer.c | ||
| dw_apb_timer_of.c | ||
| dw_apb_timer.c | ||
| em_sti.c | ||
| exynos_mct.c | ||
| h8300_timer8.c | ||
| h8300_timer16.c | ||
| h8300_tpu.c | ||
| hyperv_timer.c | ||
| i8253.c | ||
| ingenic-timer.c | ||
| jcore-pit.c | ||
| Kconfig | ||
| Makefile | ||
| mips-gic-timer.c | ||
| mmio.c | ||
| mps2-timer.c | ||
| mxs_timer.c | ||
| nomadik-mtu.c | ||
| numachip.c | ||
| renesas-ostm.c | ||
| samsung_pwm_timer.c | ||
| scx200_hrt.c | ||
| sh_cmt.c | ||
| sh_mtu2.c | ||
| sh_tmu.c | ||
| timer-armada-370-xp.c | ||
| timer-atcpit100.c | ||
| timer-atlas7.c | ||
| timer-atmel-pit.c | ||
| timer-atmel-st.c | ||
| timer-atmel-tcb.c | ||
| timer-cadence-ttc.c | ||
| timer-cs5535.c | ||
| timer-davinci.c | ||
| timer-digicolor.c | ||
| timer-efm32.c | ||
| timer-fsl-ftm.c | ||
| timer-fttmr010.c | ||
| timer-gx6605s.c | ||
| timer-imx-gpt.c | ||
| timer-imx-sysctr.c | ||
| timer-imx-tpm.c | ||
| timer-integrator-ap.c | ||
| timer-ixp4xx.c | ||
| timer-keystone.c | ||
| timer-lpc32xx.c | ||
| timer-mediatek.c | ||
| timer-meson6.c | ||
| timer-milbeaut.c | ||
| timer-mp-csky.c | ||
| timer-npcm7xx.c | ||
| timer-nps.c | ||
| timer-of.c | ||
| timer-of.h | ||
| timer-orion.c | ||
| timer-owl.c | ||
| timer-oxnas-rps.c | ||
| timer-pistachio.c | ||
| timer-prima2.c | ||
| timer-probe.c | ||
| timer-pxa.c | ||
| timer-qcom.c | ||
| timer-rda.c | ||
| timer-riscv.c | ||
| timer-rockchip.c | ||
| timer-sp.h | ||
| timer-sp804.c | ||
| timer-sprd.c | ||
| timer-stm32.c | ||
| timer-sun4i.c | ||
| timer-sun5i.c | ||
| timer-tango-xtal.c | ||
| timer-tegra.c | ||
| timer-ti-32k.c | ||
| timer-ti-dm.c | ||
| timer-u300.c | ||
| timer-versatile.c | ||
| timer-vf-pit.c | ||
| timer-vt8500.c | ||
| timer-zevio.c | ||