• David Howells's avatar
    i2c: Add message transfer tracepoints for I2C · d9a83d62
    David Howells authored
    Add tracepoints into the I2C message transfer function to retrieve the message
    sent or received.  The following config options must be turned on to make use
    of the facility:
    
    	CONFIG_FTRACE
    	CONFIG_ENABLE_DEFAULT_TRACERS
    
    The I2C tracepoint can be enabled thusly:
    
    	echo 1 >/sys/kernel/debug/tracing/events/i2c/enable
    
    and will dump messages that can be viewed in /sys/kernel/debug/tracing/trace
    that look like:
    
    	... i2c_write: i2c-5 #0 a=044 f=0000 l=2 [02-14]
    	... i2c_read: i2c-5 #1 a=044 f=0001 l=4
    	... i2c_reply: i2c-5 #1 a=044 f=0001 l=4 [33-00-00-00]
    	... i2c_result: i2c-5 n=2 ret=2
    
    formatted as:
    
    	i2c-<adapter-nr>
    	#<message-array-index>
    	a=<addr>
    	f=<flags>
    	l=<datalen>
    	n=<message-array-size>
    	ret=<result>
    	[<data>]
    
    The operation is done between the i2c_write/i2c_read lines and the i2c_reply
    and i2c_result lines so that if the hardware hangs, the trace buffer can be
    consulted to determine the problematic operation.
    
    The adapters to be traced can be selected by something like:
    
    	echo adapter_nr==1 >/sys/kernel/debug/tracing/events/i2c/filter
    
    These changes are based on code from Steven Rostedt.
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Reviewed-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    [wsa: adapted path for 'enable' in the commit msg]
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    d9a83d62
i2c-core.c 69.7 KB