All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC v2 0/6] crash: Kernel handling of CPU and memory hot un/plug
@ 2021-12-07 19:51 ` Eric DeVolder
  0 siblings, 0 replies; 28+ messages in thread
From: Eric DeVolder @ 2021-12-07 19:51 UTC (permalink / raw)
  To: linux-kernel, x86, kexec, ebiederm, dyoung, bhe, vgoyal
  Cc: tglx, mingo, bp, dave.hansen, hpa, nramas, thomas.lendacky, robh,
	efault, rppt, konrad.wilk, boris.ostrovsky, eric.devolder

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


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2022-01-19  8:26 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` 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

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.