Thread (45 messages) 45 messages, 9 authors, 2020-01-31

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

From: Josh Poimboeuf <hidden>
Date: 2020-01-28 17:03:15
Also in: lkml

On Tue, Jan 28, 2020 at 04:40:46PM +0100, Petr Mladek wrote:
On Tue 2020-01-28 09:00:14, Josh Poimboeuf wrote:
quoted
On Tue, Jan 28, 2020 at 10:28:07AM +0100, Miroslav Benes wrote:
quoted
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.
Maybe.  Though if I understand correctly, this doesn't help for any of
the new warnings because they're for static functions, and this only
warns about global functions.
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.
I don't quite get how that could be done in an automated way, but ideas
about how to implement it would certainly be welcome.
quoted
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?
The original commit mentioned 1-3% scheduler degradation.  And I'd
expect things to worsen over time as interprocedural optimizations
improve.

Also, LTO is coming whether we like it or not.  As is Clang.  Those are
real-world things which will need to work with livepatching sooner or
later.
quoted
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.
We're talking in circles.  Have you read the thread?

The samples are a (dangerous) joke.  With or without -flive-patching.
It is actually the only somehow documented way. Sure, the
documentation might get improved.  Patches are welcome.
Are you suggesting for *me* to send documentation for how *you* build
patches?
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.
I think that still remains to be seen.
N-1 users are just waiting until the 1 user develops more helper tools
for this.
No.  N-1 users have no idea how to make (safe) source-based patches in
the first place.  And if *you* don't need the tools, why would anyone
else?  Why not document the process and encourage the existence of other
users so they can get involved and help with the tooling?
I would really like to hear about some serious problems
before we do this step back in upstream.
Sometimes you need to take 1 step back before you can take 2 steps
forward.  I regret ACKing the original patch.  It was too early.

-- 
Josh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help