]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
kernel: add HWLAT_TRACER kernel config option
authorThomas Richard <thomas.richard@bootlin.com>
Mon, 5 Jan 2026 12:54:42 +0000 (13:54 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 24 Jan 2026 21:54:29 +0000 (22:54 +0100)
This adds the HWLAT_TRACER kernel configuration option. The hwlat tracer
allows to detect hardware latencies.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/21413
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
config/Config-kernel.in

index 870e53206a99abac9af1e2deb9dfaad389a9ce7b..86d99bd49beb875cd70b958184e9890438fdce93 100644 (file)
@@ -413,6 +413,41 @@ config KERNEL_PREEMPT_TRACER
          enabled. This option and the irqs-off timing option can be
          used together or separately.)
 
+config KERNEL_HWLAT_TRACER
+       bool "Tracer to detect hardware latencies (like SMIs)"
+       depends on KERNEL_FTRACE
+       help
+         This tracer, when enabled will create one or more kernel threads,
+         depending on what the cpumask file is set to, which each thread
+         spinning in a loop looking for interruptions caused by
+         something other than the kernel. For example, if a
+         System Management Interrupt (SMI) takes a noticeable amount of
+         time, this tracer will detect it. This is useful for testing
+         if a system is reliable for Real Time tasks.
+
+         Some files are created in the tracing directory when this
+         is enabled:
+
+           hwlat_detector/width   - time in usecs for how long to spin for
+           hwlat_detector/window  - time in usecs between the start of each
+                                    iteration
+
+         A kernel thread is created that will spin with interrupts disabled
+         for "width" microseconds in every "window" cycle. It will not spin
+         for "window - width" microseconds, where the system can
+         continue to operate.
+
+         The output will appear in the trace and trace_pipe files.
+
+         When the tracer is not running, it has no affect on the system,
+         but when it is running, it can cause the system to be
+         periodically non responsive. Do not run this tracer on a
+         production system.
+
+         To enable this tracer, echo in "hwlat" into the current_tracer
+         file. Every time a latency is greater than tracing_thresh, it will
+         be recorded into the ring buffer.
+
 config KERNEL_HIST_TRIGGERS
        bool "Histogram triggers"
        depends on KERNEL_FTRACE