[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] dump-core: documentation on its format.



# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1172327614 0
# Node ID 0147ef7c3cd79675453525c9d61e4dd6c8d8bad5
# Parent  e2e6830269f778954f4b6e5a589add4e43046d40
dump-core: documentation on its format.
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 docs/misc/dump-core-format.txt |  225 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 225 insertions(+)

diff -r e2e6830269f7 -r 0147ef7c3cd7 docs/misc/dump-core-format.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/misc/dump-core-format.txt    Sat Feb 24 14:33:34 2007 +0000
@@ -0,0 +1,225 @@
+xen dump-core format
+               Written by Isaku Yamahata <yamahata at valinux co jp>  Feb. 2007
+
+
+Introduction
+------------
+With xm dump-core command, the guest domain's core can be created as a file.
+Its format was changed to be based on ELF format because elf format is easily
+extensible and handy. This document describes the new format.
+In this document the new format is called new xen dump-core format,
+xen dump-core format or simply dump-core format. The file of xen dump-core
+format is called xen dump-core file or dump-core file.
+
+The usual process core file includes program headers and no section header.
+On the other hand the xen dump-core file includes no program headers and
+some sections because of its peculiar requirements.
+
+
+Reference
+---------
+For ELF format itself, see Tool Interface Standard(TIS) Executable and
+Linking Format(ELF) Specification version 1.2.
+For xen related structure, please see the xen header files.
+
+
+Elf header
+----------
+The elf header members are set as follows
+        e_ident[EI_OSABI] = ELFOSABI_SYSV = 0
+        e_type = ET_CORE = 4
+e_ident[EI_CLASS], e_ident[EI_DATA] and e_flags are set according
+to an architecture which a file is created. Other members are set as usual.
+
+
+Sections
+--------
+Currently the following sections are defined. Some sections are optional.
+
+".note.Xen" section
+        name            ".note.Xen"
+        type            SHT_NOTE
+        description
+                This section is used as note section to store xen dump-core
+                file specific informations. The each detailed informations are
+                described in note section. This section must exist.
+
+".xen_prstatus" section
+        name            ".xen_prstatus"
+        type            SHT_PROGBITS
+        structure       array of vcpu_guest_context_t
+        description
+                This section stores the array of vcpu_guest_context_t
+                which is obtained by XEN_DOMCTL_getvcpucontext hypercall
+                when the xen dump-core file is created.
+                The size of array is stored in xch_nr_vcpus member of header
+                note descriptor in .note.Xen note section.
+                This section must exist.
+
+".xen_shared_info" section
+        name            ".xen_shared_info"
+        type            SHT_PROGBITS
+        structure       shared_info_t
+        description
+                This section stores the contents of shared info page
+                of a domain. This section is optional. 
+
+".xen_p2m" section
+        name            ".xen_p2m"
+        type            SHT_PROGBITS
+        structure       array of struct xen_dumpcore_p2m
+                        struct xen_dumpcore_p2m {
+                            uint64_t    pfn;
+                            uint64_t    gmfn;
+                        };
+        description
+                This elements represents the frame number of the page
+                in .xen_pages section.
+                        pfn:    guest-specific pseudo-physical frame number
+                        gmfn:   machine physical frame number
+                The size of arrays is stored in xch_nr_pages member of header
+                note descriptor in .note.Xen note section.
+                There is no rule about the order. Analysis tools must no rely
+                on its order.
+                This section must exist when the domain is non auto
+                translated physmap mode. Currently x86 paravirtualized domain.
+
+".xen_pfn" section
+        name            ".xen_pfn"
+        type            SHT_PROGBITS
+        structure       array of uint64_t
+        description
+                This elements represents the frame number of the page
+                in .xen_pages section.
+                The size of arrays is stored in xch_nr_pages member of header
+                note descriptor in .note.Xen note section.
+                There is no rule about the order. Analysis tools must no rely
+                on its order.
+                This section must exist when the domain is auto translated
+                physmap mode. Currently x86 full virtualized domain and
+                ia64 domain.
+
+".xen_pages" section
+        name            ".xen_pages"
+        type            SHT_PROGBITS
+        structure       array of page where page is page size byte array
+        description
+                This section includes the contents of pages.
+                The corresponding address is described in .xen_p2m section
+                or .xen_pfn section.
+                The page size is stored in xch_page_size member of header note
+                descriptor in .note.Xen section.
+                The array size is stored in xch_nr_pages member of header note
+                descriptor in .note.Xen section.
+                This section must exist.
+
+
+".xen_ia64_mapped_regs" section
+        name            ".xen_ia64_mapped_regs"
+        type            SHT_PROGBITS
+        structure       array of mapped_regs_t
+        description
+                This section stores the array of mapped_regs_t.
+                The size of array is stored in xch_nr_vcpus member of header
+                note descriptor in .note.Xen note section.
+                This section is ia64 specific and must exist for ia64 domain.
+                This section must not exist for non-ia64 domain.
+
+
+note section
+------------
+The note types are defined in xen/include/public/elfnote.h.
+The note descriptors are defined in tools/libxc/xc_core.h
+Currently the following note informations are defined.
+
+
+elf note section
+
+"Xen" is used as elf note name in elf note info
+        namesz  4
+        name    "Xen" (null-terminated)
+
+
+Descriptors
+
+none note descriptor
+        type            XEN_ELFNOTE_DUMPCORE_NONE = 0x2000000
+        structure       struct xen_dumpcore_elfnote_none_desc {
+                               /* nothing is defined */
+                        };
+        description
+                This note descriptor is defined to just indicate that this
+                file is xen dump-core format without any specific information.
+                This note information must exist.
+
+header note descriptor
+        type            XEN_ELFNOTE_DUMPCORE_HEADER = 0x2000001
+        structure       struct xen_dumpcore_elfnote_header_desc {
+                                uint64_t    xch_magic;
+                                uint64_t    xch_nr_vcpus;
+                                uint64_t    xch_nr_pages;
+                                uint64_t    xch_page_size;
+                        };
+        description
+                This note descriptor stores basic information of the domain.
+                xch_magic       magic number
+                    XC_CORE_MAGIC = 0xF00FEBED for paravirtualized domain
+                    XC_CORE_MAGIC_HVM = 0xF00FEBEE for full virtualized domain
+                xch_nr_vcpus    the number of vcpus
+                xch_nr_pages    the number of pages
+                xch_page_size   guest OS's page size
+                This note information must exist.
+
+xen_version descriptor
+        type            XEN_ELFNOTE_DUMPCORE_XEN_VERSION = 0x2000002
+        structure       struct xen_dumpcore_elfnote_xen_version_desc {
+                                uint64_t                    major_version;
+                                uint64_t                    minor_version;
+                                xen_extraversion_t          extra_version;
+                                xen_compile_info_t          compile_info;
+                                xen_capabilities_info_t     capabilities;
+                                xen_changeset_info_t        changeset;
+                                xen_platform_parameters_t   
platform_parameters;
+                                uint64_t                    pagesize;
+                        };
+        description
+                This note descriptor stores basic information about xen
+                hypervisor. The each members store the result of
+                __HYPERVISOR_xen_version hypercall.
+                major_version   16msb bit of the result of XENVER_version
+                minor_version   16lsb bit of the result of XENVER_version
+                        uint64_t is used to make struct
+                        xen_dumpcore_elfnote_xen_version_desc independent
+                        on 32bit/64bit instead of uint32_t.
+                extra_version   the result of XENVER_extraversion
+                compile_info    the result of XENVER_compile_info
+                capabilities    the result of XENVER_capabilities
+                changeset       the result of XENVER_changeset
+                platform_parameters
+                                the result of XENVER_platform_parameters
+                pagesize        the result of XENVER_pagesize
+                This note information must exist.
+
+format_version descriptor
+        type            XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION = 0x2000003
+        structure       struct xen_dumpcore_elfnote_format_version_desc {
+                                uint64_t    version;
+                        };
+        description
+                This note descriptor stores xen dump-core format version.
+                The 32msb bit is major version and the 32lsb bit is minor
+                version. 
+                The minor version will be incremented when the format
+                is changed in compatible way. e.g. new sections, new note
+                descriptors are added.
+                the major version will be incremented when the format is
+                changed in incompatible way.
+                This note information must exit. Analysis tools should check
+                this format version.
+                This note information must exist.
+
+
+Format version history
+----------------------
+The currently only (major, minor) = (0, 1) is used.
+[When the format is changed, it would be described here.]

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.