TRACE_ITER_BIN                  = 0x40,
        TRACE_ITER_BLOCK                = 0x80,
        TRACE_ITER_STACKTRACE           = 0x100,
+       TRACE_ITER_SCHED_TREE           = 0x200,
 };
 
 #endif /* _LINUX_KERNEL_TRACE_H */
 
 
        if (likely(disabled == 1)) {
                tracing_sched_switch_trace(tr, data, prev, next, flags);
-               ftrace_all_fair_tasks(__rq, tr, data);
+               if (trace_flags & TRACE_ITER_SCHED_TREE)
+                       ftrace_all_fair_tasks(__rq, tr, data);
        }
 
        atomic_dec(&data->disabled);
 
        if (likely(disabled == 1)) {
                tracing_sched_wakeup_trace(tr, data, wakee, curr, flags);
-               ftrace_all_fair_tasks(__rq, tr, data);
+               if (trace_flags & TRACE_ITER_SCHED_TREE)
+                       ftrace_all_fair_tasks(__rq, tr, data);
        }
 
        atomic_dec(&data->disabled);