Re: [PATCH] Disable non-ABI-compliant optimisations for live patching

From: Jiri Kosina
Date: Thu Jun 23 2016 - 06:45:58 EST


On Thu, 23 Jun 2016, Torsten Duwe wrote:

> I haven't looked at the fentry solution, but the code I'm involved in saves
> the registers so that ftrace, live patch and friends can work freely. But
> then it restores all regs and _then_ calls the replacement, so ftrace
> saving all regs is no gain at all.

You're right, thanks for bringing this up.

In principle we should be able to modify the trampoline so that it
performs its own register saving (in ftrace_regs_caller) and restoring
(*), completely shielding the new function from any optimization gcc might
have done on registers, shouldn't we?

(*) we'll have to piggy-back on ftrace_epilogue on that, i.e. making the
return to the original code go through trampoline as well (the same
way graph tracer works)

Thanks,

--
Jiri Kosina
SUSE Labs