From: Eric DeVolder <eric.devolder@oracle.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org,
kexec@lists.infradead.org, ebiederm@xmission.com,
dyoung@redhat.com, bhe@redhat.com, vgoyal@redhat.com
Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, hpa@zytor.com,
nramas@linux.microsoft.com, thomas.lendacky@amd.com,
robh@kernel.org, efault@gmx.de, rppt@kernel.org,
konrad.wilk@oracle.com, boris.ostrovsky@oracle.com,
eric.devolder@oracle.com
Subject: [RFC v2 0/6] crash: Kernel handling of CPU and memory hot un/plug
Date: Tue, 7 Dec 2021 14:51:58 -0500 [thread overview]
Message-ID: <20211207195204.1582-1-eric.devolder@oracle.com> (raw)
When the kdump service is loaded, if a CPU or memory is hot
un/plugged, the crash elfcorehdr (for x86), 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 to initiate an unload-then-reload
of the kdump image (e. kernel, initrd, boot_params, puratory and
elfcorehdr) by the userspace kexec utility. In previous posts I have
outlined the significant performance problems related to offloading
this activity to userspace.
This patchset introduces a generic crash hot un/plug handler that
registers with the CPU and memory notifiers. Upon CPU or memory
changes, this generic handler is invoked and performs important
housekeeping, for example obtaining the appropriate lock, and then
invokes an architecture specific handler to do the appropriate
updates.
In the case of x86_64, the arch specific handler generates a new
elfcorehdr, and overwrites the old one in memory. No involvement
with userspace needed.
To realize the benefits/test this patchset, one must make a couple
of minor changes to userspace:
- Disable the udev rule for updating kdump on hot un/plug changes
Eg. on RHEL: rm -f /usr/lib/udev/rules.d/98-kexec.rules
or other technique to neuter the rule.
- Change to the kexec_file_load for loading the kdump kernel:
Eg. on RHEL: in /usr/bin/kdumpctl, change to:
standard_kexec_args="-p -d -s"
which adds the -s to select kexec_file_load syscall.
This patchset supports kexec_load with a modified kexec userspace
utility, on which I am current working to provide separately.
Regards,
eric
---
RFC v2: 7dec2021
- Acting upon Baoquan He suggestion of removing elfcorehdr from
the purgatory list of segments, removed purgatory code from
patchset, and it is signficiantly simpler now.
RFC v1: 18nov2021
https://lkml.org/lkml/2021/11/18/845
- working patchset demonstrating kernel handling of hotplug
updates to x86 elfcorehdr for kexec_file_load
RFC: 14dec2020
https://lkml.org/lkml/2020/12/14/532
- proposed concept of allowing kernel to handle hotplug update
of elfcorehdr
---
Eric DeVolder (6):
crash: fix minor typo/bug in debug message
crash hp: Introduce CRASH_HOTPLUG configuration options
crash hp: definitions and prototype changes
crash hp: generic crash hotplug support infrastructure
crash hp: kexec_file changes for crash hotplug support
crash hp: Add x86 crash hotplug support
arch/x86/Kconfig | 26 ++++++++
arch/x86/kernel/crash.c | 140 +++++++++++++++++++++++++++++++++++++++-
include/linux/kexec.h | 21 +++++-
kernel/crash_core.c | 118 +++++++++++++++++++++++++++++++++
kernel/kexec_file.c | 15 ++++-
5 files changed, 314 insertions(+), 6 deletions(-)
--
2.27.0
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Eric DeVolder <eric.devolder@oracle.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org,
kexec@lists.infradead.org, ebiederm@xmission.com,
dyoung@redhat.com, bhe@redhat.com, vgoyal@redhat.com
Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, hpa@zytor.com,
nramas@linux.microsoft.com, thomas.lendacky@amd.com,
robh@kernel.org, efault@gmx.de, rppt@kernel.org,
konrad.wilk@oracle.com, boris.ostrovsky@oracle.com,
eric.devolder@oracle.com
Subject: [RFC v2 0/6] crash: Kernel handling of CPU and memory hot un/plug
Date: Tue, 7 Dec 2021 14:51:58 -0500 [thread overview]
Message-ID: <20211207195204.1582-1-eric.devolder@oracle.com> (raw)
When the kdump service is loaded, if a CPU or memory is hot
un/plugged, the crash elfcorehdr (for x86), 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 to initiate an unload-then-reload
of the kdump image (e. kernel, initrd, boot_params, puratory and
elfcorehdr) by the userspace kexec utility. In previous posts I have
outlined the significant performance problems related to offloading
this activity to userspace.
This patchset introduces a generic crash hot un/plug handler that
registers with the CPU and memory notifiers. Upon CPU or memory
changes, this generic handler is invoked and performs important
housekeeping, for example obtaining the appropriate lock, and then
invokes an architecture specific handler to do the appropriate
updates.
In the case of x86_64, the arch specific handler generates a new
elfcorehdr, and overwrites the old one in memory. No involvement
with userspace needed.
To realize the benefits/test this patchset, one must make a couple
of minor changes to userspace:
- Disable the udev rule for updating kdump on hot un/plug changes
Eg. on RHEL: rm -f /usr/lib/udev/rules.d/98-kexec.rules
or other technique to neuter the rule.
- Change to the kexec_file_load for loading the kdump kernel:
Eg. on RHEL: in /usr/bin/kdumpctl, change to:
standard_kexec_args="-p -d -s"
which adds the -s to select kexec_file_load syscall.
This patchset supports kexec_load with a modified kexec userspace
utility, on which I am current working to provide separately.
Regards,
eric
---
RFC v2: 7dec2021
- Acting upon Baoquan He suggestion of removing elfcorehdr from
the purgatory list of segments, removed purgatory code from
patchset, and it is signficiantly simpler now.
RFC v1: 18nov2021
https://lkml.org/lkml/2021/11/18/845
- working patchset demonstrating kernel handling of hotplug
updates to x86 elfcorehdr for kexec_file_load
RFC: 14dec2020
https://lkml.org/lkml/2020/12/14/532
- proposed concept of allowing kernel to handle hotplug update
of elfcorehdr
---
Eric DeVolder (6):
crash: fix minor typo/bug in debug message
crash hp: Introduce CRASH_HOTPLUG configuration options
crash hp: definitions and prototype changes
crash hp: generic crash hotplug support infrastructure
crash hp: kexec_file changes for crash hotplug support
crash hp: Add x86 crash hotplug support
arch/x86/Kconfig | 26 ++++++++
arch/x86/kernel/crash.c | 140 +++++++++++++++++++++++++++++++++++++++-
include/linux/kexec.h | 21 +++++-
kernel/crash_core.c | 118 +++++++++++++++++++++++++++++++++
kernel/kexec_file.c | 15 ++++-
5 files changed, 314 insertions(+), 6 deletions(-)
--
2.27.0
next reply other threads:[~2021-12-07 19:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-07 19:51 Eric DeVolder [this message]
2021-12-07 19:51 ` [RFC v2 0/6] crash: Kernel handling of CPU and memory hot un/plug Eric DeVolder
2021-12-07 19:51 ` [RFC v2 1/6] crash: fix minor typo/bug in debug message Eric DeVolder
2021-12-07 19:51 ` Eric DeVolder
2021-12-07 19:52 ` [RFC v2 2/6] crash hp: Introduce CRASH_HOTPLUG configuration options Eric DeVolder
2021-12-07 19:52 ` Eric DeVolder
2021-12-07 19:52 ` [RFC v2 3/6] crash hp: definitions and prototype changes Eric DeVolder
2021-12-07 19:52 ` Eric DeVolder
2022-01-19 8:23 ` Baoquan He
2022-01-19 8:23 ` Baoquan He
2022-01-19 8:25 ` Baoquan He
2022-01-19 8:25 ` Baoquan He
2021-12-07 19:52 ` [RFC v2 4/6] crash hp: generic crash hotplug support infrastructure Eric DeVolder
2021-12-07 19:52 ` Eric DeVolder
2021-12-08 13:38 ` David Hildenbrand
2021-12-08 13:38 ` David Hildenbrand
2021-12-09 15:40 ` Eric DeVolder
2021-12-09 15:40 ` Eric DeVolder
2021-12-07 19:52 ` [RFC v2 5/6] crash hp: kexec_file changes for crash hotplug support Eric DeVolder
2021-12-07 19:52 ` Eric DeVolder
2021-12-07 19:52 ` [RFC v2 6/6] crash hp: Add x86 " Eric DeVolder
2021-12-07 19:52 ` Eric DeVolder
2022-01-05 14:25 ` [RFC v2 0/6] crash: Kernel handling of CPU and memory hot un/plug Eric DeVolder
2022-01-05 14:25 ` Eric DeVolder
2022-01-10 8:04 ` Baoquan He
2022-01-10 8:04 ` Baoquan He
2022-01-10 19:59 ` Eric DeVolder
2022-01-10 19:59 ` 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=20211207195204.1582-1-eric.devolder@oracle.com \
--to=eric.devolder@oracle.com \
--cc=bhe@redhat.com \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dyoung@redhat.com \
--cc=ebiederm@xmission.com \
--cc=efault@gmx.de \
--cc=hpa@zytor.com \
--cc=kexec@lists.infradead.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=nramas@linux.microsoft.com \
--cc=robh@kernel.org \
--cc=rppt@kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=vgoyal@redhat.com \
--cc=x86@kernel.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.