IMX8X ARM64 FTRACE功能使用:
1.kernel 配置参数
a/arch/arm64/configs/imx8qxp_mek_vf12_recovery_defconfig
b/arch/arm64/configs/imx8qxp_mek_vf12_recovery_defconfig
@@ -3302,6 +3302,21 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=21
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
+ CONFIG_NOP_TRACER=y
+ CONFIG_PREEMPT_TRACER=y
+ CONFIG_TRACER_MAX_TRACE=y
+ CONFIG_TRACE_CLOCK=y
+ CONFIG_RING_BUFFER=y
+ CONFIG_EVENT_TRACING=y
+ CONFIG_CONTEXT_SWITCH_TRACER=y
+ CONFIG_TRACING=y
+ CONFIG_GENERIC_TRACER=y
+ CONFIG_SCHED_TRACER=y
+ CONFIG_WAKEUP_LATENCY_HIST=y
+ CONFIG_MISSED_TIMER_OFFSETS_HIST=y
+ CONFIG_FTRACE_SYSCALLS=y
+ CONFIG_TRACER_SNAPSHOT=y
+ CONFIG_BRANCH_PROFILE_NONE=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
@@ -3309,7 +3324,9 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACING_SUPPORT=y
- # CONFIG_FTRACE is not set
+ CONFIG_FTRACE=y
+ CONFIG_IRQSOFF_TRACER=y
+ CONFIG_ENABLE_DEFAULT_TRACERS=y
# CONFIG_DMA_API_DEBUG is not set
使用方法:
mount -t debugfs nodev /sys/kernel/debug
echo 1 > /sys/kernel/debug/tracing/events/irq/irq_handler_entry/enable
echo 1 > /sys/kernel/debug/tracing/events/irq/irq_handler_exit/enable
cat /sys/kernel/debug/tracing/trace | grep -s "irq=38" > /tmp/trace_usb.log
cp /tmp/trace_usb.log /mnt/udisk1/
LOG:
# tracer: nop
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
<idle>-0 [000] d.h1 12.868001: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.868020: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.874126: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.874168: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.874372: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.874379: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.874622: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.874630: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.875121: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.875128: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.875246: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.875253: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.875874: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.875885: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.881621: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.881641: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.881747: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.881754: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.881997: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.882005: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.882497: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.882504: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.882622: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.882630: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.882747: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.882755: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.888628: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.888674: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.888872: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.888879: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.888997: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.889005: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.889621: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.889628: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.889746: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.889753: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.889872: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.889880: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.895754: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.895795: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.895872: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.895879: irq_handler_exit: irq=38 ret=handled
<idle>-0 [000] d.h1 12.895997: irq_handler_entry: irq=38 name=5b0d0000.usb
<idle>-0 [000] d.h1 12.896005: irq_handler_exit: irq=38 ret=handled