Re: [PATCH v2 00/12] fs/proc/vmcore: kdump support for virtio-mem on s390
From: Heiko Carstens <hca@linux.ibm.com>
Date: 2025-01-08 12:11:01
Also in:
kexec, kvm, linux-fsdevel, linux-mm, linux-s390, lkml
On Wed, Jan 08, 2025 at 07:04:23AM -0500, Michael S. Tsirkin wrote:
On Wed, Dec 04, 2024 at 01:54:31PM +0100, David Hildenbrand wrote:quoted
The only "different than everything else" thing about virtio-mem on s390 is kdump: The crash (2nd) kernel allocates+prepares the elfcore hdr during fs_init()->vmcore_init()->elfcorehdr_alloc(). Consequently, the kdump kernel must detect memory ranges of the crashed kernel to include via PT_LOAD in the vmcore. On other architectures, all RAM regions (boot + hotplugged) can easily be observed on the old (to crash) kernel (e.g., using /proc/iomem) to create the elfcore hdr. On s390, information about "ordinary" memory (heh, "storage") can be obtained by querying the hypervisor/ultravisor via SCLP/diag260, and that information is stored early during boot in the "physmem" memblock data structure. But virtio-mem memory is always detected by as device driver, which is usually build as a module. So in the crash kernel, this memory can only be properly detected once the virtio-mem driver started up. The virtio-mem driver already supports the "kdump mode", where it won't hotplug any memory but instead queries the device to implement the pfn_is_ram() callback, to avoid reading unplugged memory holes when reading the vmcore. With this series, if the virtio-mem driver is included in the kdump initrd -- which dracut already takes care of under Fedora/RHEL -- it will now detect the device RAM ranges on s390 once it probes the devices, to add them to the vmcore using the same callback mechanism we already have for pfn_is_ram(). To add these device RAM ranges to the vmcore ("patch the vmcore"), we will add new PT_LOAD entries that describe these memory ranges, and update all offsets vmcore size so it is all consistent. My testing when creating+analyzing crash dumps with hotplugged virtio-mem memory (incl. holes) did not reveal any surprises. Patch #1 -- #7 are vmcore preparations and cleanups Patch #8 adds the infrastructure for drivers to report device RAM Patch #9 + #10 are virtio-mem preparations Patch #11 implements virtio-mem support to report device RAM Patch #12 activates it for s390, implementing a new function to fill PT_LOAD entry for device RAMWho is merging this? virtio parts: Acked-by: Michael S. Tsirkin <mst@redhat.com>
I guess this series should go via Andrew Morton. Andrew? Acked-by: Heiko Carstens <hca@linux.ibm.com> # s390