Re: [PATCH v3 5/6] x86/ftrace: Use text_poke()

From: Petr Mladek
Date: Tue Jan 28 2020 - 10:40:52 EST


On Tue 2020-01-28 09:00:14, Josh Poimboeuf wrote:
> On Tue, Jan 28, 2020 at 10:28:07AM +0100, Miroslav Benes wrote:
> > I don't think we have something special at SUSE not generally available...
> >
> > ...and I don't think it is really important to discuss that and replying
> > to the above, because there is a legitimate use case which relies on the
> > flag. We decided to support different use cases right at the beginning.
> >
> > I understand it currently complicates things for objtool, but objtool is
> > sensitive to GCC code generation by definition. "Issues" appear with every
> > new GCC version. I see no difference here and luckily it is not so
> > difficult to fix it.
> >
> > I am happy to help with acting on those objtool warning reports you
> > mentioned in the other email. Just Cc me where appropriate. We will take a
> > look.
>
> As I said, the objtool warnings aren't even the main issue.

Great.

Anyway, I think that we might make your life easier with using
the proposed -Wsuggest-attribute=noreturn.

Also it might be possible to create the list of global
noreturn functions using some gcc tool. Similar way that we get
the list of functions that need to be livepatched explicitly
because of the problematic optimizations.

It sounds like a win-win approach.


> There are N users[*] of CONFIG_LIVEPATCH, where N is perhaps dozens.
> For N-1 users, they have to suffer ALL the drawbacks, with NONE of the
> benefits.

You wrote in the other mail:

> The problems associated with it: performance, LTO incompatibility,
> clang incompatibility (I think?), the GCC dead code issue.

SUSE performance team did extensive testing and did not found
any real performance issues. It was discussed when the option
was enabled upstream.

Are the other problems affecting real life usage, please?
Could you be more specific about them, please?


> And, even if they wanted those benefits, they have no idea how to get
> them because the patch creation process isn't documented.

I do not understand this. All the sample modules and selftests are
using source based livepatches. It is actually the only somehow
documented way. Sure, the documentation might get improved.
Patches are welcome.

The option is not currently needed by the selftests only because
there is no selftest for this type of problems. But the problems
are real. They would actually deserve selftests. Again, patches
are welcome.

My understanding is that the source based livepatches is the future.
N-1 users are just waiting until the 1 user develops more helper
tools for this. I would really like to hear about some serious problems
before we do this step back in upstream.

Best Regards,
Petr