On Thu, 2008-08-07 at 09:38 -0400, Vivek Goyal wrote: [...] > What kind of problem we run into if we don't disable the ftracer? > > I think there are too many #ifdefs now and probably we can at least > get rid if #ifdef CONFIG_FTRACE thing. > > I think ftracer needs to export the function to enable the tracer > back (tracer_enable()) so that we don't directly play with ftrace_enabled > variable. tracer_enable() can be do {} while{0} in case of CONFIG_FTRACE=n > so that we can get rid of #ifdefs here. The ftracer issue for kexec is reported by Dhaval Giani and fixed by Ingo as in following thread: http://lkml.org/lkml/2008/2/19/175 After some testing, I found that if we enable ftrace before restore_processor_state(), system will hang. I think maybe ftracer depends on some processor state that we destroyed during kexec and restored by restore_processor_state(). So I move save_processor_state() and restore_processor_state() into machine_kexec() and enable ftrace after restore_processor_state(). The #ifdef CONFIG_FTRACE should be removed. I think an interface like irq_save/restore is good for this. saved_ftrace_enabled = ftrace_save_enabled() <...> ftrace_restore_enabled(saved_ftrace_enabled) Best Regards, Huang Ying