On Thu, 2016-02-25 at 16:11 +0100, Torsten Duwe wrote: > On Thu, Feb 25, 2016 at 11:48:59AM +1100, Balbir Singh wrote: > > > @@ -608,6 +621,9 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, > > > return -ENOENT; > > > if (!restore_r2((u32 *)location + 1, me)) > > > return -ENOEXEC; > > > + /* Squash the TOC saver for profiler calls */ > > > + if (!strcmp("_mcount", strtab+sym->st_name)) > > > + SQUASH_TOC_SAVE_INSN(value); > > I don't think we need this anymore, do we? > > I'm not sure. Once a module is loaded, are all the "bl _mcount"s NOPed out > before any of its functions are run? If not, the _mcount trampoline will > be used, and it must not save R2! With dynamic ftrace, yes they are all nop'ed out before the module runs. See ftrace_module_init() called from load_module(). But with static ftrace they are just left as-is. As this series is currently written you can't enable mprofile-kernel with static ftrace. But that's a bit fragile, someone could easily send a patch to enable it for static ftrace and we'd probably merge it without thinking about this code. So I'll leave this as is for now, and we will clean it up once the series is in. cheers -- To unsubscribe from this list: send the line "unsubscribe live-patching" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html