Skip to content

Instantly share code, notes, and snippets.

@Binary-Eater
Created November 4, 2024 05:30
Show Gist options
  • Save Binary-Eater/24480a7d1dc311a87b827c9e7024ef04 to your computer and use it in GitHub Desktop.
Save Binary-Eater/24480a7d1dc311a87b827c9e7024ef04 to your computer and use it in GitHub Desktop.
A hid-nvidia-shield ftrace demo
# Initial setup
sudo su -
mount -t tracefs nodev /sys/kernel/tracing
cat /sys/kernel/tracing/available_tracers
# Function tracer
echo function > /sys/kernel/tracing/current_tracer
echo 0 > /sys/kernel/tracing/tracing_on
echo > /sys/kernel/tracing/trace
echo 1 > /sys/kernel/tracing/tracing_on
# Use fftest
echo 0 > /sys/kernel/tracing/tracing_on
cat /sys/kernel/tracing/trace | less # We see a lot of junk we do not care about
echo > /sys/kernel/tracing/trace
# Lets start filtering our trace
cat /sys/kernel/tracing/available_filter_functions | less
cat /sys/kernel/tracing/set_ftrace_filter
echo '*:mod:hid_nvidia_shield' > /sys/kernel/tracing/set_ftrace_filter
cat /sys/kernel/tracing/set_ftrace_filter
echo 1 > /sys/kernel/tracing/tracing_on
# Use fftest
echo 0 > /sys/kernel/tracing/tracing_on
cat /sys/kernel/tracing/trace | less # Great we know some functions are called
# What about what they do
# Ok, lets try function graph tracer
echo > /sys/kernel/tracing/trace
echo function_graph > /sys/kernel/tracing/current_tracer
echo 1 > /sys/kernel/tracing/tracing_on
# Use fftest
echo 0 > /sys/kernel/tracing/tracing_on
cat /sys/kernel/tracing/trace | less
# Ok, that was not very useful. I got a callgraph without any of the calls that
# the hid_nvidia_shield function made
# Hmm, that sucks. Everything inside these filtered functions are missing
echo > /sys/kernel/tracing/trace
echo > /sys/kernel/tracing/set_ftrace_filter
cat /sys/kernel/tracing/set_ftrace_filter
echo 'thunderstrike*' > /sys/kernel/tracing/set_graph_function
echo 'shield*' >> /sys/kernel/tracing/set_graph_function
echo 1 > /sys/kernel/tracing/tracing_on
echo 0 > /sys/kernel/tracing/tracing_on
cat /sys/kernel/tracing/trace | less
echo '*:mod:hid_nvidia_shield' > /sys/kernel/tracing/set_graph_function # No-go, someone needs to implement set_graph_filter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment