Re: refactoring livepatch documentation was Re: [PATCH 1/2] docs/livepatch: Add new compiler considerations doc

From: Miroslav Benes
Date: Wed Sep 02 2020 - 10:57:31 EST


[side note: So not only that my INBOX is a mess after the summer. I also
lost some emails apparently. I'm really sorry about that. ]

CCing Nicolai too.

> Hi Petr, Josh,
>
> The compiler optimization pitfall document can wait for refactored livepatch
> documentation if that puts it into better context, particularly for newbies.
> I don't mind either way. FWIW, I don't profess to be an authoritative source
> its content -- we've dealt some of these issues in kpatch, so it was
> interesting to see how they affect livepatches that don't rely on binary
> comparison.
>
>
> Toward the larger goal, I've changed the thread subject to talk about how we
> may rearrange and supplement our current documentation. This is a first pass
> at a possible refactoring...
>
>
> 1. Provide a better index page to connect the other files/docs, like
> https://www.kernel.org/doc/html/latest/core-api/index.html but obviously not
> that extensive. Right now we have only a Table of Contents tree without any
> commentary.
>
> 2. Rearrange and refactor sections:
>
> livepatch.rst
> Keep just about everything
> Add a history section to explain ksplice, kgraft, kpatch for the
> uninitiated?
> Add a section on source based vs. binary diff livepatch creation,
> this may be worth its own top-level section
>
> Livepatch API
> Basic API
> Callbacks
> Shadow variables
> Cumulative patches
> System state
>
> KLP Relocations
> Right now this is a bit academic AFAIK kpatch is the only tool
> currently making use of them. So maybe this document becomes a
> more general purpose doc explaining how to reference unexported
> symbols? (ie, how does kgraft currently do it, particularly
> w/kallsyms going unexported?)

Yes, we rely on kallsyms_lookup_name() pretty much right now and once we
hit the problem with the next kernel version upgrade, we'll have to fix
it.

> Eventually this could contain klp-convert howto if it ever gets
> merged.
>
> Compiler considerations
> TBD
>
> I suppose this doesn't create a "Livepatching creation for dummies" guide, but
> my feeling is that there are so many potential (hidden) pitfalls that such
> guide would be dangerous.

It does not create the guide, but it looks like a good basis. I agree with
Josh here. It might be difficult at the beginning, but the outcome could
be great even for a newbie and I think we should aim for that.

> If someone were to ask me today how to start building a livepatch, I would
> probably point them at the samples to demonstrate the basic concept and API,
> but then implore them to read through the documentation to understand how
> quickly complicated it can become.

True.

We discuss the need to properly document our internal process every once
in a while and there is always something more important to deal with, but
it is high time to finally start with that.

Miroslav