From: Miroslav Benes <mbenes@suse.cz>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Joao Moreira <jmoreira@suse.de>,
live-patching@vger.kernel.org, linux-kernel@vger.kernel.org,
mmarek@suse.cz, pmladek@suse.com, jikos@suse.cz, nstange@suse.de,
jroedel@suse.de, matz@suse.de, khlebnikov@yandex-team.ru,
jeyu@kernel.org
Subject: Re: [PATCH 0/8] livepatch: klp-convert tool
Date: Thu, 19 Oct 2017 16:27:31 +0200 (CEST) [thread overview]
Message-ID: <alpine.LSU.2.21.1710191613170.21219@san.suse.cz> (raw)
In-Reply-To: <20171019140338.pngwewyzllaw2wu5@treble>
On Thu, 19 Oct 2017, Josh Poimboeuf wrote:
> On Thu, Oct 19, 2017 at 03:24:51PM +0200, Miroslav Benes wrote:
> > On Thu, 19 Oct 2017, Josh Poimboeuf wrote:
> >
> > > On Wed, Oct 11, 2017 at 09:42:09AM -0300, Joao Moreira wrote:
> > > > > Sounds good! For klp-convert to be successful, we really need a
> > > > > strategy for dealing with such optimizations. I'm thinking that a
> > > > > '-fpreserve-function-abi' flag would be the cleanest way to handle it.
> > > > >
> > > > > If we don't have a strategy for dealing with optimizations, then we may
> > > > > instead need to go with a binary diff-based tool like kpatch-build.
> > > >
> > > > I'm currently looking into binary diff-based solutions to deal with this
> > > > problem. My plan is to submit a second patch set once I have it functional
> > > > and land both things (klp-convert and bin-diff) in two different steps.
> > >
> > > Instead of having multiple approaches, I'd strongly prefer that we
> > > converge on a single in-tree approach that works for everybody.
> > >
> > > (Whether that will be source-based like klp-convert or binary-based like
> > > kpatch-build, I don't know.)
> >
> > I think that klp-convert can work with both. Even with non-source-based
> > solution you need something to generate those relocation records. I
> > consider klp-convert as a part of the building pipeline.
>
> Hm. If I understand correctly, the binary diff tool (or some tool in
> the pipeline) would create the .klp.module_relocs.* section, and then
> klp-convert would convert that to the .klp.sym.* and .klp.rela.*
> sections which livepatch needs.
>
> But if the original tool is creating a relocation section, can't it
> instead just create the livepatch .klp.* sections directly? What's the
> benefit of the extra conversion step?
I haven't seen this patch set for a while (which is embarassing), but
klp-convert tries to generate needed sections automatically without
.klp.module_relocs.* section. Only when there is an ambiguity which cannot
be solved automatically, manual annotation (KLP_MODULE_RELOC) is needed.
In that case klp-convert provides hints what needs to be done.
> > > BTW, what is bin-diff? Have you seen kpatch-build?
> >
> > I'm speaking for Joao here, but we discussed this personally and I think
> > he meant approach based on asmtool
> > (https://github.com/joergroedel/asmtool). We'd like to explore as much as
> > possible.
>
> Ok, I'd be interested in seeing that, and also what its benefits are
> compared to kpatch-build.
>
> > We also considered complete source-based solution. Nicolai Stange works on
> > that (or at least on something which would make it possible).
>
> What is a complete source-based solution? Is it just "klp-convert +
> some GCC optimization strategy" or is it something more?
There's more. You'd give the tool a fix (patch, diff) and kernel sources,
and it would automatically generate a source code of its livepatch. If
possible (and there are some obstacles), there would be an advantage
compared to kpatch-build or different asm/obj-based solution. You could
verify the result and its correctness. It could also be beneficial if we'd
like to pursue automatic verification in the future.
> > We can decide what to have in upstream afterwards. But I still think that
> > klp-convert will be part of it in some form. Am I missing something?
>
> I guess it really depends on what the solution looks like. If we
> decided on kpatch-build (or some variation of its tooling) then we might
> not need klp-convert.
That's possible.
> > > > Is there any issue with following this schedule? Meaning, do you guys still
> > > > plan on reviewing this patch set or do you prefer me to do something
> > > > differently in terms of approach?
> > >
> > > IMO, klp-convert will only be useful if we have a realistic strategy for
> > > dealing with GCC optimizations. So I'd say we should follow through on
> > > that with the compiler folks before spending too much more time on it.
> >
> > Yes, I'm all for a solution on GCC side, but that may take a while and
> > even then it is still a huge step to get it into a distribution (we have
> > GCC 4.8.5 in SLE12 :)).
> >
> > However, there is an easy temporary solution. You can add all
> > referenced optimized functions to a livepatch and let klp-convert process
> > the rest.
>
> How do you find all referenced optimized functions?
I guess that since there is no connection between a symbol and its
optimized counterpart, klp-convert warns about this.
Joao, is this correct?
I understand your position and I agree that klp-convert may become
superfluous in the future. Maybe not. And maybe the future is far away.
Anyway, it looks useful in its current form and it would help tremendously
at least here at SUSE, which is the reason Joao worked on it and send it
upstream.
Miroslav
next prev parent reply other threads:[~2017-10-19 14:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-29 19:01 [PATCH 0/8] livepatch: klp-convert tool Joao Moreira
2017-08-29 19:01 ` [PATCH 1/8] livepatch: Create and include UAPI headers Joao Moreira
2017-08-29 19:01 ` [PATCH 2/8] kbuild: Support for Symbols.list creation Joao Moreira
2017-08-31 15:24 ` Joe Lawrence
2017-08-31 17:34 ` Josh Poimboeuf
2017-09-04 7:23 ` Joao Moreira
2017-08-29 19:01 ` [PATCH 3/8] livepatch: Add klp-convert tool Joao Moreira
2017-08-30 20:03 ` Joao Moreira
2017-08-29 19:01 ` [PATCH 4/8] livepatch: Add klp-convert annotation helpers Joao Moreira
2017-08-29 19:01 ` [PATCH 5/8] modpost: Integrate klp-convert Joao Moreira
2017-08-29 19:01 ` [PATCH 6/8] modpost: Add modinfo flag to livepatch modules Joao Moreira
2017-08-29 19:01 ` [PATCH 7/8] livepatch: Add sample livepatch module Joao Moreira
2017-08-29 19:01 ` [PATCH 8/8] documentation: Update on livepatch elf format Joao Moreira
2017-08-30 18:00 ` [PATCH 0/8] livepatch: klp-convert tool Josh Poimboeuf
2017-10-10 14:17 ` Miroslav Benes
2017-10-11 2:46 ` Josh Poimboeuf
2017-10-11 12:42 ` Joao Moreira
2017-10-19 13:01 ` Josh Poimboeuf
2017-10-19 13:24 ` Miroslav Benes
2017-10-19 14:03 ` Josh Poimboeuf
2017-10-19 14:27 ` Miroslav Benes [this message]
2017-10-19 15:15 ` Josh Poimboeuf
2017-10-19 16:00 ` Miroslav Benes
2017-10-19 16:20 ` Josh Poimboeuf
2017-10-20 8:51 ` Miroslav Benes
2017-10-20 12:03 ` Josh Poimboeuf
2017-10-20 12:44 ` Torsten Duwe
2017-10-20 13:24 ` Josh Poimboeuf
2017-10-20 13:39 ` Miroslav Benes
2017-10-20 13:44 ` Torsten Duwe
2017-10-20 14:20 ` Josh Poimboeuf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LSU.2.21.1710191613170.21219@san.suse.cz \
--to=mbenes@suse.cz \
--cc=jeyu@kernel.org \
--cc=jikos@suse.cz \
--cc=jmoreira@suse.de \
--cc=jpoimboe@redhat.com \
--cc=jroedel@suse.de \
--cc=khlebnikov@yandex-team.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=matz@suse.de \
--cc=mmarek@suse.cz \
--cc=nstange@suse.de \
--cc=pmladek@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox