At 03/02/2012 05:59 PM, Wen Congyang Wrote: > Hi, all > > 'virsh dump' can not work when host pci device is used by guest. We have > discussed this issue here: > http://lists.nongnu.org/archive/html/qemu-devel/2011-10/msg00736.html > > The last version is here: > http://lists.nongnu.org/archive/html/qemu-devel/2012-02/msg04228.html > > We have determined to introduce a new command dump to dump memory. The core > file's format can be elf. > > Note: > 1. The guest should be x86 or x86_64. The other arch is not supported now. > 2. If you use old gdb, gdb may crash. I use gdb-7.3.1, and it does not crash. > 3. If the OS is in the second kernel, gdb may not work well, and crash can > work by specifying '--machdep phys_addr=xxx' in the command line. The > reason is that the second kernel will update the page table, and we can > not get the page table for the first kernel. > 4. The cpu's state is stored in QEMU note. You neet to modify crash to use > it to calculate phys_base. > 5. If the guest OS is 32 bit and the memory size is larger than 4G, the vmcore > is elf64 format. You should use the gdb which is built with > --enable-64-bit-bfd. > 6. This patchset is based on the upstream tree, and apply one patch that is > still > in Luiz Capitulino's tree, because I use the API qemu_get_fd() in this > patchset. >
Hi, Jan, Luiz Capitulino Do you have any comments? Thanks Wen Congyang > Changes from v7 to v8: > 1. addressed Hatayama's comments > > Changes from v6 to v7: > 1. addressed Jan's comments > 2. fix some bugs > 3. store cpu's state into the vmcore > > Changes from v5 to v6: > 1. allow user to dump a fraction of the memory > 2. fix some bugs > > Changes from v4 to v5: > 1. convert the new command dump to QAPI > > Changes from v3 to v4: > 1. support it to run asynchronously > 2. add API to cancel dumping and query dumping progress > 3. add API to control dumping speed > 4. auto cancel dumping when the user resumes vm, and the status is failed. > > Changes from v2 to v3: > 1. address Jan Kiszka's comment > > Changes from v1 to v2: > 1. fix virt addr in the vmcore. > > Wen Congyang (16): > Add API to create memory mapping list > Add API to check whether a physical address is I/O address > implement cpu_get_memory_mapping() > Add API to check whether paging mode is enabled > Add API to get memory mapping > Add API to get memory mapping without do paging > target-i386: Add API to write elf notes to core file > target-i386: Add API to write cpu status to core file > target-i386: add API to get dump info > make gdb_id() generally avialable > introduce a new monitor command 'dump' to dump guest's memory > support to cancel the current dumping > support to query dumping status > run dump at the background > support detached dump > allow user to dump a fraction of the memory > > Makefile.target | 3 + > configure | 8 + > cpu-all.h | 66 +++ > cpu-common.h | 2 + > dump.c | 980 > +++++++++++++++++++++++++++++++++++++ > dump.h | 23 + > elf.h | 5 + > exec.c | 11 + > gdbstub.c | 9 - > gdbstub.h | 9 + > hmp-commands.hx | 44 ++ > hmp.c | 89 ++++ > hmp.h | 3 + > memory_mapping.c | 290 +++++++++++ > memory_mapping.h | 60 +++ > monitor.c | 7 + > qapi-schema.json | 58 +++ > qmp-commands.hx | 110 +++++ > target-i386/arch_dump.c | 433 ++++++++++++++++ > target-i386/arch_memory_mapping.c | 271 ++++++++++ > vl.c | 5 +- > 21 files changed, 2475 insertions(+), 11 deletions(-) > create mode 100644 dump.c > create mode 100644 dump.h > create mode 100644 memory_mapping.c > create mode 100644 memory_mapping.h > create mode 100644 target-i386/arch_dump.c > create mode 100644 target-i386/arch_memory_mapping.c > > > > >