qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [Question] dump memory when host pci device is used by


From: Wen Congyang
Subject: Re: [Qemu-devel] [Question] dump memory when host pci device is used by guest
Date: Tue, 18 Oct 2011 17:43:09 +0800
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100413 Fedora/3.0.4-2.fc13 Thunderbird/3.0.4

At 10/18/2011 04:36 PM, Jan Kiszka Write:
> On 2011-10-18 10:34, Richard W.M. Jones wrote:
> 
> Yeah, I see. Could also be solved via gdb scripts, but crash is already
> there.
> 
> But let's see if the formats actually differ. In the end, crash is just
> parsing the same information that also gdb sees.

I think the format can be similar with diskdump/kdump/netdump:

dump_header:     1 block
sub header:      n blocks(n is stored in dump_header)
bitmap:          m blocks(2m is stored in dump_header)
dumpable bitmap: m blocks
memory data(We can know whether a page is stored in the core by bitmap and 
dumpable bitmap)

The format of dump header(It's like kdump/diskdump):
struct disk_dump_header {
        char                    signature[SIG_LEN];     /* = "QEMU    " */
        int                     header_version; /* Dump header version */
        struct new_utsname      utsname;        /* copy of system_utsname */
        struct timeval          timestamp;      /* Time stamp */
        unsigned int            status;
        int                     block_size;     /* Size of a block in byte */
        int                     sub_hdr_size;   /* Size of arch dependent
                                                   header in blocks */
        unsigned int            bitmap_blocks;  /* Size of Memory bitmap in
                                                   block */
        unsigned int            max_mapnr;      /* = max_mapnr */
        unsigned int            total_ram_blocks;/* Number of blocks should be
                                                   written */
        unsigned int            device_blocks;  /* Number of total blocks in
                                                 * the dump device */
        unsigned int            written_blocks; /* Number of written blocks */
        unsigned int            current_cpu;    /* CPU# which handles dump */
        int                     nr_cpus;        /* Number of CPUs */
};

The sub header can contains all registers's value on each vcpu, and other 
information,
for example:
struct qemu_sub_header {
        unsigned long   start_pfn;
        unsigned long   end_pfn;
        off_t           offset_note;
        unsigned long   size_note;
};

Thanks
Wen Congyang

> 
> Jan
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]