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: Jan Kiszka
Subject: Re: [Qemu-devel] [Question] dump memory when host pci device is used by guest
Date: Tue, 18 Oct 2011 15:55:16 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

On 2011-10-18 15:51, Wen Congyang wrote:
> On 10/18/2011 06:28 PM, Jan Kiszka wrote:
>> On 2011-10-18 11:43, Wen Congyang wrote:
>>> 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;
>>> };
>>
>> So is this a standard format or only "similar" to something? Which tools
>> will understand it out-of-the-box? If it's not standard, why?
> 
> Only similar to something, and we can add a little codes into crash to 
> support such format.
> 
> If you have a better format, please tell me.

The format crash already processes? What do you need in addition? That
should be discussed first, not the format details.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux



reply via email to

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