[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 6/8] kdump: set vmcoreinfo location
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v5 6/8] kdump: set vmcoreinfo location |
Date: |
Mon, 7 Aug 2017 20:16:16 +0200 |
kdump header provides offset and size of the vmcoreinfo content,
append it if available (skip the ELF note header).
crash-7.1.9 was the first version that started looking in the
vmcoreinfo data for phys_base instead of in the kdump_sub_header.
Signed-off-by: Marc-André Lureau <address@hidden>
---
dump.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/dump.c b/dump.c
index cef2dd5bf9..49805a3cdc 100644
--- a/dump.c
+++ b/dump.c
@@ -858,6 +858,18 @@ static void create_header32(DumpState *s, Error **errp)
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
+ if (s->guest_note &&
+ note_name_equal(s, s->guest_note, "VMCOREINFO")) {
+ uint64_t hsize, name_size, size_vmcoreinfo_desc, offset_vmcoreinfo;
+
+ get_note_sizes(s, s->guest_note,
+ &hsize, &name_size, &size_vmcoreinfo_desc);
+ offset_vmcoreinfo = offset_note + s->note_size - s->guest_note_size +
+ (DIV_ROUND_UP(hsize, 4) + DIV_ROUND_UP(name_size, 4)) * 4;
+ kh->offset_vmcoreinfo = cpu_to_dump64(s, offset_vmcoreinfo);
+ kh->size_vmcoreinfo = cpu_to_dump32(s, size_vmcoreinfo_desc);
+ }
+
kh->offset_note = cpu_to_dump64(s, offset_note);
kh->note_size = cpu_to_dump32(s, s->note_size);
@@ -958,6 +970,18 @@ static void create_header64(DumpState *s, Error **errp)
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
+ if (s->guest_note &&
+ note_name_equal(s, s->guest_note, "VMCOREINFO")) {
+ uint64_t hsize, name_size, size_vmcoreinfo_desc, offset_vmcoreinfo;
+
+ get_note_sizes(s, s->guest_note,
+ &hsize, &name_size, &size_vmcoreinfo_desc);
+ offset_vmcoreinfo = offset_note + s->note_size - s->guest_note_size +
+ (DIV_ROUND_UP(hsize, 4) + DIV_ROUND_UP(name_size, 4)) * 4;
+ kh->offset_vmcoreinfo = cpu_to_dump64(s, offset_vmcoreinfo);
+ kh->size_vmcoreinfo = cpu_to_dump64(s, size_vmcoreinfo_desc);
+ }
+
kh->offset_note = cpu_to_dump64(s, offset_note);
kh->note_size = cpu_to_dump64(s, s->note_size);
--
2.14.0.1.geff633fa0
- [Qemu-devel] [PATCH v5 0/8] KASLR kernel dump support, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 1/8] fw_cfg: rename read callback, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 2/8] fw_cfg: add write callback, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 3/8] fw_cfg: add vmcoreinfo file, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 4/8] dump: add guest ELF note, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 5/8] dump: update phys_base header field based on VMCOREINFO content, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 6/8] kdump: set vmcoreinfo location,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v5 7/8] scripts/dump-guest-memory.py: add vmcoreinfo, Marc-André Lureau, 2017/08/07
- [Qemu-devel] [PATCH v5 8/8] MAINTAINERS: add Dump maintainers, Marc-André Lureau, 2017/08/07
- Re: [Qemu-devel] [PATCH v5 0/8] KASLR kernel dump support, Michael S. Tsirkin, 2017/08/16