Created
November 4, 2024 05:30
-
-
Save Binary-Eater/24480a7d1dc311a87b827c9e7024ef04 to your computer and use it in GitHub Desktop.
A hid-nvidia-shield ftrace demo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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