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: Fri, 22 Nov 2024 15:31:19 +0800 [thread overview]
Message-ID: <Z0AzR2Yhl527wkbP@MiWiFi-R3L-srv> (raw)
In-Reply-To: <20241025151134.1275575-8-david@redhat.com>
On 10/25/24 at 05:11pm, David Hildenbrand wrote:
......snip...
> diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
> index 3e90416ee54e..c332a9a4920b 100644
> --- a/fs/proc/vmcore.c
> +++ b/fs/proc/vmcore.c
> @@ -69,6 +69,8 @@ static LIST_HEAD(vmcore_cb_list);
> /* Whether the vmcore has been opened once. */
> static bool vmcore_opened;
>
> +static void vmcore_process_device_ram(struct vmcore_cb *cb);
> +
> void register_vmcore_cb(struct vmcore_cb *cb)
> {
> INIT_LIST_HEAD(&cb->next);
> @@ -80,6 +82,8 @@ void register_vmcore_cb(struct vmcore_cb *cb)
> */
> if (vmcore_opened)
> pr_warn_once("Unexpected vmcore callback registration\n");
> + else if (cb->get_device_ram)
> + vmcore_process_device_ram(cb);
Global variable 'vmcore_opened' is used to indicate if /proc/vmcore is
opened. With &vmcore_mutex, we don't need to worry about concurrent
opening and modification. However, if people just open /proc/vmcore and
close it after checking, then s390 will miss the vmcore dumping, is it
acceptable?
> mutex_unlock(&vmcore_mutex);
> }
> EXPORT_SYMBOL_GPL(register_vmcore_cb);
> @@ -1511,6 +1515,158 @@ int vmcore_add_device_dump(struct vmcoredd_data *data)
......
> +
> +static void vmcore_process_device_ram(struct vmcore_cb *cb)
> +{
> + unsigned char *e_ident = (unsigned char *)elfcorebuf;
> + struct vmcore_mem_node *first, *m;
> + LIST_HEAD(list);
> + int count;
> +
> + if (cb->get_device_ram(cb, &list)) {
> + pr_err("Kdump: obtaining device ram ranges failed\n");
> + return;
> + }
> + count = list_count_nodes(&list);
> + if (!count)
> + return;
> +
> + /* We only support Elf64 dumps for now. */
> + if (WARN_ON_ONCE(e_ident[EI_CLASS] != ELFCLASS64)) {
> + pr_err("Kdump: device ram ranges only support Elf64\n");
> + goto out_free;
> + }
Only supporting Elf64 dumps seems to be a basic checking, do we need
to put it at the beginning of function? Otherwise, we spend efforts to
call cb->get_device_ram(), then fail.
> +
> + /*
> + * For some reason these ranges are already know? Might happen
> + * with unusual register->unregister->register sequences; we'll simply
> + * sanity check using the first range.
> + */
> + first = list_first_entry(&list, struct vmcore_mem_node, list);
> + list_for_each_entry(m, &vmcore_list, list) {
> + unsigned long long m_end = m->paddr + m->size;
> + unsigned long long first_end = first->paddr + first->size;
> +
> + if (first->paddr < m_end && m->paddr < first_end)
> + goto out_free;
> + }
> +
> + /* If adding the mem nodes succeeds, they must not be freed. */
> + if (!vmcore_add_device_ram_elf64(&list, count))
> + return;
> +out_free:
> + vmcore_free_mem_nodes(&list);
> +}
> +#else /* !CONFIG_PROC_VMCORE_DEVICE_RAM */
> +static void vmcore_process_device_ram(struct vmcore_cb *cb)
> +{
> +}
> +#endif /* CONFIG_PROC_VMCORE_DEVICE_RAM */
> +
> /* Free all dumps in vmcore device dump list */
> static void vmcore_free_device_dumps(void)
> {
> diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
> index 722dbcff7371..8e581a053d7f 100644
> --- a/include/linux/crash_dump.h
> +++ b/include/linux/crash_dump.h
next prev parent reply other threads:[~2024-11-22 7:32 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
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 [this message]
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=Z0AzR2Yhl527wkbP@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.