On Fri, 2010-05-14 at 10:15 -0700, David Daney wrote: > On 05/14/2010 04:08 AM, Wu Zhangjin wrote: > > From: Wu Zhangjin<wuzhangjin@xxxxxxxxx> > > > > With the help of uasm, this patch encodes the instructions of dynamic > > Function Tracer in ftrace_dyn_arch_init() when initializing it. > > > [...] > > +#include<asm/uasm.h> > > > > All of uasm is _cpuinit, I haven't checked everything, but are you sure > you aren't calling if from non-_cpuinit code? The calling tree looks like this: start_kernel() // __init --> ftrace_init() // __init --> ftrace_dyn_arch_init() // __init --> ftrace_dyn_arch_init_insns() // inline --> uasm_*/UASM_* Nobody else will call uasm_*/UASM_* in this patch, I have checked the uasm usage in arch/mips/kernel/traps.c. Seems the usam functions are also called in the __init *set_except_vector(). so, it will also be safe in this patch, is it? Thanks & Regards, Wu Zhangjin