xref: /openbmc/qemu/include/sysemu/dump.h (revision 7aad248d)
19c17d615SPaolo Bonzini /*
29c17d615SPaolo Bonzini  * QEMU dump
39c17d615SPaolo Bonzini  *
49c17d615SPaolo Bonzini  * Copyright Fujitsu, Corp. 2011, 2012
59c17d615SPaolo Bonzini  *
69c17d615SPaolo Bonzini  * Authors:
79c17d615SPaolo Bonzini  *     Wen Congyang <wency@cn.fujitsu.com>
89c17d615SPaolo Bonzini  *
99c17d615SPaolo Bonzini  * This work is licensed under the terms of the GNU GPL, version 2 or later.
109c17d615SPaolo Bonzini  * See the COPYING file in the top-level directory.
119c17d615SPaolo Bonzini  *
129c17d615SPaolo Bonzini  */
139c17d615SPaolo Bonzini 
149c17d615SPaolo Bonzini #ifndef DUMP_H
159c17d615SPaolo Bonzini #define DUMP_H
169c17d615SPaolo Bonzini 
17fda05387Sqiaonuohan #define MAKEDUMPFILE_SIGNATURE      "makedumpfile"
18fda05387Sqiaonuohan #define MAX_SIZE_MDF_HEADER         (4096) /* max size of makedumpfile_header */
19fda05387Sqiaonuohan #define TYPE_FLAT_HEADER            (1)    /* type of flattened format */
20fda05387Sqiaonuohan #define VERSION_FLAT_HEADER         (1)    /* version of flattened format */
21fda05387Sqiaonuohan #define END_FLAG_FLAT_HEADER        (-1)
22fda05387Sqiaonuohan 
23*7aad248dSqiaonuohan #define ARCH_PFN_OFFSET             (0)
24*7aad248dSqiaonuohan 
25*7aad248dSqiaonuohan #define paddr_to_pfn(X, page_shift) \
26*7aad248dSqiaonuohan     (((unsigned long long)(X) >> (page_shift)) - ARCH_PFN_OFFSET)
27*7aad248dSqiaonuohan #define pfn_to_paddr(X, page_shift) \
28*7aad248dSqiaonuohan     (((unsigned long long)(X) + ARCH_PFN_OFFSET) << (page_shift))
29*7aad248dSqiaonuohan 
309c17d615SPaolo Bonzini typedef struct ArchDumpInfo {
319c17d615SPaolo Bonzini     int d_machine;  /* Architecture */
329c17d615SPaolo Bonzini     int d_endian;   /* ELFDATA2LSB or ELFDATA2MSB */
339c17d615SPaolo Bonzini     int d_class;    /* ELFCLASS32 or ELFCLASS64 */
349c17d615SPaolo Bonzini } ArchDumpInfo;
359c17d615SPaolo Bonzini 
36fda05387Sqiaonuohan typedef struct QEMU_PACKED MakedumpfileHeader {
37fda05387Sqiaonuohan     char signature[16];     /* = "makedumpfile" */
38fda05387Sqiaonuohan     int64_t type;
39fda05387Sqiaonuohan     int64_t version;
40fda05387Sqiaonuohan } MakedumpfileHeader;
41fda05387Sqiaonuohan 
42fda05387Sqiaonuohan typedef struct QEMU_PACKED MakedumpfileDataHeader {
43fda05387Sqiaonuohan     int64_t offset;
44fda05387Sqiaonuohan     int64_t buf_size;
45fda05387Sqiaonuohan } MakedumpfileDataHeader;
46fda05387Sqiaonuohan 
4756c4bfb3SLaszlo Ersek struct GuestPhysBlockList; /* memory_mapping.h */
4856c4bfb3SLaszlo Ersek int cpu_get_dump_info(ArchDumpInfo *info,
4956c4bfb3SLaszlo Ersek                       const struct GuestPhysBlockList *guest_phys_blocks);
509c17d615SPaolo Bonzini ssize_t cpu_get_note_size(int class, int machine, int nr_cpus);
519c17d615SPaolo Bonzini 
529c17d615SPaolo Bonzini #endif
53