dump: allow target to set the physical base
crash assumes the physical base in the kdump subheader of makedumpfile formatted dumps is correct. Zero is not correct for all architectures, so allow it to be changed. (No functional change.) Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1452542185-10914-5-git-send-email-drjones@redhat.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
8161befdd1
commit
b6e05aa473
4
dump.c
4
dump.c
|
@ -775,7 +775,7 @@ static void create_header32(DumpState *s, Error **errp)
|
||||||
|
|
||||||
/* 64bit max_mapnr_64 */
|
/* 64bit max_mapnr_64 */
|
||||||
kh->max_mapnr_64 = cpu_to_dump64(s, s->max_mapnr);
|
kh->max_mapnr_64 = cpu_to_dump64(s, s->max_mapnr);
|
||||||
kh->phys_base = cpu_to_dump32(s, PHYS_BASE);
|
kh->phys_base = cpu_to_dump32(s, s->dump_info.phys_base);
|
||||||
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
|
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
|
||||||
|
|
||||||
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
|
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
|
||||||
|
@ -875,7 +875,7 @@ static void create_header64(DumpState *s, Error **errp)
|
||||||
|
|
||||||
/* 64bit max_mapnr_64 */
|
/* 64bit max_mapnr_64 */
|
||||||
kh->max_mapnr_64 = cpu_to_dump64(s, s->max_mapnr);
|
kh->max_mapnr_64 = cpu_to_dump64(s, s->max_mapnr);
|
||||||
kh->phys_base = cpu_to_dump64(s, PHYS_BASE);
|
kh->phys_base = cpu_to_dump64(s, s->dump_info.phys_base);
|
||||||
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
|
kh->dump_level = cpu_to_dump32(s, DUMP_LEVEL);
|
||||||
|
|
||||||
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
|
offset_note = DISKDUMP_HEADER_BLOCKS * block_size + size;
|
||||||
|
|
|
@ -20,6 +20,7 @@ typedef struct ArchDumpInfo {
|
||||||
int d_class; /* ELFCLASS32 or ELFCLASS64 */
|
int d_class; /* ELFCLASS32 or ELFCLASS64 */
|
||||||
uint32_t page_size; /* The target's page size. If it's variable and
|
uint32_t page_size; /* The target's page size. If it's variable and
|
||||||
* unknown, then this should be the maximum. */
|
* unknown, then this should be the maximum. */
|
||||||
|
uint64_t phys_base; /* The target's physmem base. */
|
||||||
} ArchDumpInfo;
|
} ArchDumpInfo;
|
||||||
|
|
||||||
struct GuestPhysBlockList; /* memory_mapping.h */
|
struct GuestPhysBlockList; /* memory_mapping.h */
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
|
|
||||||
#define KDUMP_SIGNATURE "KDUMP "
|
#define KDUMP_SIGNATURE "KDUMP "
|
||||||
#define SIG_LEN (sizeof(KDUMP_SIGNATURE) - 1)
|
#define SIG_LEN (sizeof(KDUMP_SIGNATURE) - 1)
|
||||||
#define PHYS_BASE (0)
|
|
||||||
#define DUMP_LEVEL (1)
|
#define DUMP_LEVEL (1)
|
||||||
#define DISKDUMP_HEADER_BLOCKS (1)
|
#define DISKDUMP_HEADER_BLOCKS (1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue