Messages in this thread | | | Date | Sat, 19 Feb 2011 14:07:24 +0900 | From | Masami Hiramatsu <> | Subject | Re: [RFC][PATCH 0/4] ftrace: Use -mfentry when supported (this is for x86_64 right now) |
| |
(2011/02/19 8:02), Steven Rostedt wrote: > On Fri, 2011-02-18 at 14:45 -0800, H. Peter Anvin wrote: > >> We should also be able to use the breakpoint hack to avoid holding all >> the CPUs. They still need to be interrupted, but that skips the >> rendezvous operation.
That's what I've done with text_poke_fixup() http://lkml.org/lkml/2009/12/18/312
And I think it still not be checked officially from silicon side.
> As this is about the ftrace code, I'm in the process of analyzing and > updating how the function tracer works. I can look to see if I can > design it so we don't have to always use stop_machine() if a breakpoint > method is in place. > > Basically what is needed is to convert a "nop" into a "call" or maybe > the other way around, safely. > > Now is it safe to insert a breakpoint (usually a byte I believe), modify > the rest of the instruction and then replace the breakpoint to the new > code? Since the instruction that is being replaced or the instruction > being added is always a nop, the breakpoint handler needs to do nothing > but return to the location after the nop/call.
Yes, at least with text_poke_fixup(), you can call it as below
text_poke_fixup(addr, call_insn, CALL_INSN_SIZE, addr + CALL_INSN_SIZE);
Then, if a processor hits the addr, the breakpoint handler changes its regs->ip to addr + CALL_INSN_SIZE so that it skips the modifying instruction.
> Is there any synchronization that needs to be done when doing this? Or > can it just be: > > insert_breakpoint(); > update_instruction(); > remove_breakpoint(); > > Because we need to do this for 22,000 calls in a row.
In the case of text_poke_fixup(), it sends IPI twice for synchronization, which doesn't stop all cores but current core. Of course, theoretically this can be reduced by doing it in a batch.
Thank you,
-- Masami HIRAMATSU 2nd Dept. Linux Technology Center Hitachi, Ltd., Systems Development Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |