Re: Does anyone actually use KEXEC_JUMP?

From: David Woodhouse
Date: Mon Dec 16 2024 - 13:19:25 EST


On 16 December 2024 16:00:00 GMT, "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> wrote:
>David Woodhouse <dwmw2@xxxxxxxxxxxxx> writes:
>
>> On Mon, 2024-12-16 at 14:39 +0100, Rafael J. Wysocki wrote:
>>> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>>>
>>> The KEXEC_JUMP flow is analogous to hibernation flows occurring
>>> before
>>> and after creating an image and before and after jumping from the
>>> restore kernel to the image one, which is why it uses the same device
>>> callbacks as those hibernation flows.
>>>
>>> Add comments explaining that to the code in question and update an
>>> existing comment in it which appears a bit out of context.
>>>
>>> No functional changes.
>>>
>>> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>>
>> Thanks. I'll round that up into my kexec-debug tree, which Ingo has
>> been taking into tip/x86/boot. Once I'm done fighting with
>> objtool(qv).
>
>I have no objection to getting kexec jump more in sync with the
>rest of the power management code.
>
>I do have a question though. Does anyone actually use kexec jump?
>
>It is fine if folks do, but I haven't actually heard of anyone using
>it. If folks aren't using it, it might make sense to just use the fact
>that it is broken as a nudge to remove that option.
>
>Eric
>
>
>

It isn't broken. I know of it being used a few million times a week.

There are corner cases which have never worked right, like the callee putting a different return address for its next invocation, on the stack *above* the address it 'ret's to. Which since the first kjump patch has been the first word of the page *after* the swap page (and is now fixed in my tree). But fundamentally it *does* work.

I only started messing with it because I was working on relocate_kernel() and needed to write a test case for it; the fact that I know of it being used in production is actually just a coincidence.