From: Baoquan He <bhe@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-s390@vger.kernel.org, virtualization@lists.linux.dev,
kvm@vger.kernel.org, linux-fsdevel@vger.kernel.org,
kexec@lists.infradead.org, "Heiko Carstens" <hca@linux.ibm.com>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Sven Schnelle" <svens@linux.ibm.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Vivek Goyal" <vgoyal@redhat.com>,
"Dave Young" <dyoung@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Janosch Frank" <frankja@linux.ibm.com>,
"Claudio Imbrenda" <imbrenda@linux.ibm.com>,
"Eric Farman" <farman@linux.ibm.com>,
"Andrew Morton" <akpm@linux-foundation.org>
Subject: Re: [PATCH v1 07/11] fs/proc/vmcore: introduce PROC_VMCORE_DEVICE_RAM to detect device RAM ranges in 2nd kernel
Date: Wed, 20 Nov 2024 22:05:15 +0800 [thread overview]
Message-ID: <Zz3sm+BhCrTO3bId@MiWiFi-R3L-srv> (raw)
In-Reply-To: <4b07a3eb-aad6-4436-9591-289c6504bb92@redhat.com>
On 11/20/24 at 11:48am, David Hildenbrand wrote:
> On 20.11.24 11:13, Baoquan He wrote:
> > On 10/25/24 at 05:11pm, David Hildenbrand wrote:
> > > s390 allocates+prepares the elfcore hdr in the dump (2nd) kernel, not in
> > > the crashed kernel.
> > >
> > > RAM provided by memory devices such as virtio-mem can only be detected
> > > using the device driver; when vmcore_init() is called, these device
> > > drivers are usually not loaded yet, or the devices did not get probed
> > > yet. Consequently, on s390 these RAM ranges will not be included in
> > > the crash dump, which makes the dump partially corrupt and is
> > > unfortunate.
> > >
> > > Instead of deferring the vmcore_init() call, to an (unclear?) later point,
> > > let's reuse the vmcore_cb infrastructure to obtain device RAM ranges as
> > > the device drivers probe the device and get access to this information.
> > >
> > > Then, we'll add these ranges to the vmcore, adding more PT_LOAD
> > > entries and updating the offsets+vmcore size.
> > >
> > > Use Kconfig tricks to include this code automatically only if (a) there is
> > > a device driver compiled that implements the callback
> > > (PROVIDE_PROC_VMCORE_DEVICE_RAM) and; (b) the architecture actually needs
> > > this information (NEED_PROC_VMCORE_DEVICE_RAM).
> > >
> > > The current target use case is s390, which only creates an elf64
> > > elfcore, so focusing on elf64 is sufficient.
> > >
> > > Signed-off-by: David Hildenbrand <david@redhat.com>
> > > ---
> > > fs/proc/Kconfig | 25 ++++++
> > > fs/proc/vmcore.c | 156 +++++++++++++++++++++++++++++++++++++
> > > include/linux/crash_dump.h | 9 +++
> > > 3 files changed, 190 insertions(+)
> > >
> > > diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig
> > > index d80a1431ef7b..1e11de5f9380 100644
> > > --- a/fs/proc/Kconfig
> > > +++ b/fs/proc/Kconfig
> > > @@ -61,6 +61,31 @@ config PROC_VMCORE_DEVICE_DUMP
> > > as ELF notes to /proc/vmcore. You can still disable device
> > > dump using the kernel command line option 'novmcoredd'.
> > > +config PROVIDE_PROC_VMCORE_DEVICE_RAM
> > > + def_bool n
> > > +
> > > +config NEED_PROC_VMCORE_DEVICE_RAM
> > > + def_bool n
> > > +
> > > +config PROC_VMCORE_DEVICE_RAM
> > > + def_bool y
> > > + depends on PROC_VMCORE
> > > + depends on NEED_PROC_VMCORE_DEVICE_RAM
> > > + depends on PROVIDE_PROC_VMCORE_DEVICE_RAM
> >
> > Kconfig item is always a thing I need learn to master.
>
> Yes, it's usually a struggle to get it right. It took me a couple of
> iterations to get to this point :)
>
> > When I checked
> > this part, I have to write them down to deliberate. I am wondering if
> > below 'simple version' works too and more understandable. Please help
> > point out what I have missed.
> >
> > ===========simple version======
> > config PROC_VMCORE_DEVICE_RAM
> > def_bool y
> > depends on PROC_VMCORE && VIRTIO_MEM
> > depends on NEED_PROC_VMCORE_DEVICE_RAM
> >
> > config S390
> > select NEED_PROC_VMCORE_DEVICE_RAM
> > ============
Sorry, things written down didn't correctly reflect them in my mind.
===========simple version======
fs/proc/Kconfig:
config PROC_VMCORE_DEVICE_RAM
def_bool y
depends on PROC_VMCORE && VIRTIO_MEM
depends on NEED_PROC_VMCORE_DEVICE_RAM
arch/s390/Kconfig:
config NEED_PROC_VMCORE_DEVICE_RAM
def y
==================================
>
> So the three changes you did are
>
> (a) Remove the config option but select/depend on them.
>
> (b) Remove the "depends on PROC_VMCORE" from PROC_VMCORE_DEVICE_RAM,
> and the "if PROC_VMCORE" from s390.
>
> (c) Remove the PROVIDE_PROC_VMCORE_DEVICE_RAM
>
>
> Regarding (a), that doesn't work. If you select a config option that doesn't
> exist, it is silently dropped. It's always treated as if it wouldn't be set.
>
> Regarding (b), I think that's an anti-pattern (having config options enabled
> that are completely ineffective) and I don't see a benefit dropping them.
>
> Regarding (c), it would mean that s390x unconditionally includes that code
> even if virtio-mem is not configured in.
>
> So while we could drop PROVIDE_PROC_VMCORE_DEVICE_RAM -- (c), it would that
> we end up including code in configurations that don't possibly need it.
> That's why I included that part.
>
> >
> >
> > ======= config items extracted from this patchset====
> > config PROVIDE_PROC_VMCORE_DEVICE_RAM
> > def_bool n
> >
> > config NEED_PROC_VMCORE_DEVICE_RAM
> > def_bool n
> >
> > config PROC_VMCORE_DEVICE_RAM
> > def_bool y
> > depends on PROC_VMCORE
> > depends on NEED_PROC_VMCORE_DEVICE_RAM
> > depends on PROVIDE_PROC_VMCORE_DEVICE_RAM
> >
> > config VIRTIO_MEM
> > depends on X86_64 || ARM64 || RISCV
> > ~~~~~ I don't get why VIRTIO_MEM dones't depend on S390 if
> > s390 need PROC_VMCORE_DEVICE_RAM.
>
> This series depends on s390 support for virtio-mem, which just went
> upstream.
Got It, I just applied this series on top of the latest mainline's
master branch. Thanks for telling.
>
>
> commit 38968bcdcc1d46f2fdcd3a72599d5193bf8baf84
> Author: David Hildenbrand <david@redhat.com>
> Date: Fri Oct 25 16:14:49 2024 +0200
>
> virtio-mem: s390 support
>
>
> > ......
> > select PROVIDE_PROC_VMCORE_DEVICE_RAM if PROC_VMCORE
> >
> > config S390
> > select NEED_PROC_VMCORE_DEVICE_RAM if PROC_VMCORE
> > =================================================
> >
>
> Thanks for having a look!
>
> --
> Cheers,
>
> David / dhildenb
>
next prev parent reply other threads:[~2024-11-20 14:05 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 15:11 [PATCH v1 00/11] fs/proc/vmcore: kdump support for virtio-mem on s390 David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 01/11] fs/proc/vmcore: convert vmcore_cb_lock into vmcore_mutex David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-15 9:30 ` Baoquan He
2024-11-15 10:03 ` David Hildenbrand
2024-11-20 8:16 ` Baoquan He
2024-11-20 8:56 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 02/11] fs/proc/vmcore: replace vmcoredd_mutex by vmcore_mutex David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-15 9:32 ` Baoquan He
2024-11-15 10:04 ` David Hildenbrand
2024-11-20 8:14 ` Baoquan He
2024-10-25 15:11 ` [PATCH v1 03/11] fs/proc/vmcore: disallow vmcore modifications after the vmcore was opened David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-22 9:16 ` Baoquan He
2024-11-22 9:30 ` David Hildenbrand
2024-11-25 14:41 ` Baoquan He
2024-11-29 10:38 ` David Hildenbrand
2024-12-03 10:42 ` Baoquan He
2024-12-03 10:51 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 04/11] fs/proc/vmcore: move vmcore definitions from kcore.h to crash_dump.h David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-15 9:44 ` Baoquan He
2024-11-15 9:59 ` David Hildenbrand
2024-11-20 9:42 ` Baoquan He
2024-11-20 10:28 ` David Hildenbrand
2024-11-21 4:35 ` Baoquan He
2024-11-21 15:37 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 05/11] fs/proc/vmcore: factor out allocating a vmcore memory node David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-20 9:45 ` Baoquan He
2024-10-25 15:11 ` [PATCH v1 06/11] fs/proc/vmcore: factor out freeing a list of vmcore ranges David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-20 9:46 ` Baoquan He
2024-10-25 15:11 ` [PATCH v1 07/11] fs/proc/vmcore: introduce PROC_VMCORE_DEVICE_RAM to detect device RAM ranges in 2nd kernel David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-20 10:13 ` Baoquan He
2024-11-20 10:48 ` David Hildenbrand
2024-11-20 14:05 ` Baoquan He [this message]
2024-11-20 14:39 ` David Hildenbrand
2024-11-21 4:30 ` Baoquan He
2024-11-21 19:47 ` David Hildenbrand
2024-11-22 7:51 ` Baoquan He
2024-11-22 7:31 ` Baoquan He
2024-11-22 9:47 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 08/11] virtio-mem: mark device ready before registering callbacks in kdump mode David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 09/11] virtio-mem: remember usable region size David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 10/11] virtio-mem: support CONFIG_PROC_VMCORE_DEVICE_RAM David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-10-25 15:11 ` [PATCH v1 11/11] s390/kdump: virtio-mem kdump support (CONFIG_PROC_VMCORE_DEVICE_RAM) David Hildenbrand
2024-10-25 15:11 ` David Hildenbrand
2024-11-04 6:21 ` [PATCH v1 00/11] fs/proc/vmcore: kdump support for virtio-mem on s390 Baoquan He
2024-11-04 6:21 ` Baoquan He
2024-11-15 8:46 ` Baoquan He
2024-11-15 8:55 ` David Hildenbrand
2024-11-15 9:48 ` Baoquan He
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=Zz3sm+BhCrTO3bId@MiWiFi-R3L-srv \
--to=bhe@redhat.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=dyoung@redhat.com \
--cc=eperezma@redhat.com \
--cc=farman@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=jasowang@redhat.com \
--cc=kexec@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=mst@redhat.com \
--cc=svens@linux.ibm.com \
--cc=thuth@redhat.com \
--cc=vgoyal@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=xuanzhuo@linux.alibaba.com \
/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.