Hi Dave,
I have been looking at the trace extension that you deliver together with crash. In the kernel I look at the trace_array is defined as:
struct trace_array {
struct list_head list;
char *name;
struct trace_buffer trace_buffer;
#ifdef CONFIG_TRACER_MAX_TRACE
/*
*/
struct trace_buffer max_buffer;
bool allocated_snapshot;
#endif
....
However trace.c assumes that if the trace_buffer field exists then the max_buffer field also exists, which is not true. So if CONFIG_TRACER_MAX_TRACE is not defined in the kernel then the trace extension will fail when it is loaded with a message that the max_buffer field does not exist.
To fix this then the statements:
init_offset(trace_array, max_buffer);
in the function init_offsets and
ftrace_int_max_tr_trace();
in function ftrace_init should not be executed if the max_buffer field is not present. I have tested this and it works for me.
Jan
Jan Karlsson
Senior Software Engineer
System Assurance
Sony Mobile Communications
Tel: +46 703 062 174