From: Simon Horman <horms@kernel.org>
To: Eric DeVolder <eric.devolder@oracle.com>
Cc: kexec@lists.infradead.org, boris.ostrovsky@oracle.com
Subject: Re: [PATCH v3 0/6] crashdump: Kernel handling of CPU and memory hot un/plug
Date: Wed, 4 Oct 2023 14:08:46 +0200 [thread overview]
Message-ID: <ZR1Vzik09c89PEMK@kernel.org> (raw)
In-Reply-To: <20230927181136.2627-1-eric.devolder@oracle.com>
On Wed, Sep 27, 2023 at 02:11:30PM -0400, Eric DeVolder wrote:
> When the kdump service is loaded, if a CPU or memory is hot
> un/plugged, the crash elfcorehdr, which describes the CPUs and memory
> in the system, must also be updated, else the resulting vmcore is
> inaccurate (eg. missing either CPU context or memory regions).
>
> The current solution utilizes udev (eg. RHEL /usr/lib/udev/rules.d/
> 98-kexec.rules) to initiate an unload-then-reload of the *entire* kdump
> image (eg. kernel, initrd, boot_params, purgatory and elfcorehdr) by
> the userspace kexec utility. This occurrs just so the elfcorehdr can
> be updated with the latest list of CPUs and memory regions. In a
> previous post I have outlined the significant performance problems
> related to offloading this activity to userspace.
>
> With the Linux kernel 6.6 commit below, the kernel now has the ability
> to directly modify the elfcorehdr, eliminating the need to
> unload-then-reload the entire kdump image when CPU or memory is hot
> un/plugged or on/offlined.
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d6
> 8b4b6f307d155475cce541f2aee938032ed22e
>
> This kexec-tools patch series is for supporting hotplug with the
> kexec_load() syscall; the kernel directly supports hotplug for the
> kexec_file_load() syscall, requiring no userspace help.
>
> There are two basic obstacles/requirements for the kexec-tools to
> overcome in order to support kernel hotplug rewriting of the
> elfcorehdr.
>
> First, the buffer containing the elfcorehdr must be excluded from the
> purgatory checksum/digest, which is computed at load time. Otherwise
> kernel run-time changes to the elfcorehdr, as a result of hot un/plug,
> would result in the checksum failing (specifically in purgatory at
> panic kernel boot time), and kdump capture kernel failing to start.
> To let the kernel know it is okay to modify the elfcorehdr, kexec
> sets the KEXEC_UPDATE_ELFCOREHDR flag.
>
> NOTE: The kernel specifically does *NOT* attempt to recompute the
> checksum/digest as that would ultimately require patching the in-
> memory purgatory image with the updated checksum. As that purgatory
> image is already fully linked, it is binary blob containing no ELF
> information which would allow it to be re-linked or patched. Thus
> excluding the elfcorehdr from the checksum/digests avoids all these
> problems.
>
> Second, the size of the elfcorehdr buffer must be large enough
> to accomodate growth of the number of CPUs and/or memory regions.
>
> To satisfy the first requirement, this patch series introduces the
> --hotplug option to indicate to kexec-tools that kexec should exclude
> the elfcorehdr buffer from the purgatory checksum/digest calculation
> and set the KEXEC_UPDATE_ELFCOREHDR flag.
>
> To satisfy the second requirement, the size is obtained from the
> /sys/kernel/crash_elfcorehdr_size node (new with the kernel series
> cited above).
>
> To use this feature with kexec_load() syscall, invoke kexec with:
>
> kexec -c --hotplug ...
>
> Thanks!
> eric
Thanks Eric,
applied.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2023-10-04 12:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-27 18:11 [PATCH v3 0/6] crashdump: Kernel handling of CPU and memory hot un/plug Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 1/6] kexec: define KEXEC_UPDATE_ELFCOREHDR Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 2/6] crashdump: introduce the hotplug command line options Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 3/6] crashdump: setup general hotplug support Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 4/6] crashdump: exclude elfcorehdr segment from digest for hotplug Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 5/6] crashdump/x86: identify elfcorehdr segment " Eric DeVolder
2023-09-27 18:11 ` [PATCH v3 6/6] crashdump/x86: set the elfcorehdr segment size " Eric DeVolder
2023-10-04 12:08 ` Simon Horman [this message]
2023-10-04 18:23 ` [PATCH v3 0/6] crashdump: Kernel handling of CPU and memory hot un/plug Eric DeVolder
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=ZR1Vzik09c89PEMK@kernel.org \
--to=horms@kernel.org \
--cc=boris.ostrovsky@oracle.com \
--cc=eric.devolder@oracle.com \
--cc=kexec@lists.infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.