1. 31 10月, 2016 1 次提交
    • A
      memory: Replace skip_dump flag with "ram_device" · 21e00fa5
      Alex Williamson 提交于
      Setting skip_dump on a MemoryRegion allows us to modify one specific
      code path, but the restriction we're trying to address encompasses
      more than that.  If we have a RAM MemoryRegion backed by a physical
      device, it not only restricts our ability to dump that region, but
      also affects how we should manipulate it.  Here we recognize that
      MemoryRegions do not change to sometimes allow dumps and other times
      not, so we replace setting the skip_dump flag with a new initializer
      so that we know exactly the type of region to which we're applying
      this behavior.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
      21e00fa5
  2. 07 6月, 2016 1 次提交
  3. 23 3月, 2016 1 次提交
    • M
      include/qemu/osdep.h: Don't include qapi/error.h · da34e65c
      Markus Armbruster 提交于
      Commit 57cb38b3 included qapi/error.h into qemu/osdep.h to get the
      Error typedef.  Since then, we've moved to include qemu/osdep.h
      everywhere.  Its file comment explains: "To avoid getting into
      possible circular include dependencies, this file should not include
      any other QEMU headers, with the exceptions of config-host.h,
      compiler.h, os-posix.h and os-win32.h, all of which are doing a
      similar job to this file and are under similar constraints."
      qapi/error.h doesn't do a similar job, and it doesn't adhere to
      similar constraints: it includes qapi-types.h.  That's in excess of
      100KiB of crap most .c files don't actually need.
      
      Add the typedef to qemu/typedefs.h, and include that instead of
      qapi/error.h.  Include qapi/error.h in .c files that need it and don't
      get it now.  Include qapi-types.h in qom/object.h for uint16List.
      
      Update scripts/clean-includes accordingly.  Update it further to match
      reality: replace config.h by config-target.h, add sysemu/os-posix.h,
      sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
      comment quoted above similarly.
      
      This reduces the number of objects depending on qapi/error.h from "all
      of them" to less than a third.  Unfortunately, the number depending on
      qapi-types.h shrinks only a little.  More work is needed for that one.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      [Fix compilation without the spice devel packages. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da34e65c
  4. 23 2月, 2016 1 次提交
  5. 05 2月, 2016 1 次提交
    • P
      all: Clean up includes · d38ea87a
      Peter Maydell 提交于
      Clean up includes so that osdep.h is included first and headers
      which it implies are not included manually.
      
      This commit was created with scripts/clean-includes.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1454089805-5470-16-git-send-email-peter.maydell@linaro.org
      d38ea87a
  6. 26 6月, 2015 1 次提交
  7. 31 10月, 2014 1 次提交
  8. 03 9月, 2013 1 次提交
  9. 08 8月, 2013 3 次提交
    • L
      dump: rebase from host-private RAMBlock offsets to guest-physical addresses · 56c4bfb3
      Laszlo Ersek 提交于
      RAMBlock.offset                   --> GuestPhysBlock.target_start
      RAMBlock.offset + RAMBlock.length --> GuestPhysBlock.target_end
      RAMBlock.length                   --> GuestPhysBlock.target_end -
                                            GuestPhysBlock.target_start
      
      "GuestPhysBlock.host_addr" is only used when writing the dump contents.
      
      This patch enables "crash" to work with the vmcore by rebasing the vmcore
      from the left side of the following diagram to the right side:
      
      host-private
      offset
      relative
      to ram_addr   RAMBlock                  guest-visible paddrs
                  0 +-------------------+.....+-------------------+ 0
                    |         ^         |     |        ^          |
                    |       640 KB      |     |      640 KB       |
                    |         v         |     |        v          |
        0x0000a0000 +-------------------+.....+-------------------+ 0x0000a0000
                    |         ^         |     |XXXXXXXXXXXXXXXXXXX|
                    |       384 KB      |     |XXXXXXXXXXXXXXXXXXX|
                    |         v         |     |XXXXXXXXXXXXXXXXXXX|
        0x000100000 +-------------------+.....+-------------------+ 0x000100000
                    |         ^         |     |        ^          |
                    |       3583 MB     |     |      3583 MB      |
                    |         v         |     |        v          |
        0x0e0000000 +-------------------+.....+-------------------+ 0x0e0000000
                    |         ^         |.    |XXXXXXXXXXXXXXXXXXX|
                    | above_4g_mem_size | .   |XXXX PCI hole XXXXX|
                    |         v         |  .  |XXXX          XXXXX|
           ram_size +-------------------+   . |XXXX  512 MB  XXXXX|
                                         .   .|XXXXXXXXXXXXXXXXXXX|
                                          .   +-------------------+ 0x100000000
                                           .  |         ^         |
                                            . | above_4g_mem_size |
                                             .|         v         |
                                              +-------------------+ ram_size
                                                                    + 512 MB
      
      Related RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=981582Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      56c4bfb3
    • L
      dump: populate guest_phys_blocks · c5d7f60f
      Laszlo Ersek 提交于
      While the machine is paused, in guest_phys_blocks_append() we register a
      one-shot MemoryListener, solely for the initial collection of the valid
      guest-physical memory ranges that happens at listener registration time.
      
      For each range that is reported to guest_phys_blocks_region_add(), we
      attempt to merge the range with the preceding one.
      
      Ranges can only be joined if they are contiguous in both guest-physical
      address space, and contiguous in host virtual address space.
      
      The "maximal" ranges that remain in the end constitute the guest-physical
      memory map that the dump will be based on.
      
      Related RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=981582Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      c5d7f60f
    • L
      dump: introduce GuestPhysBlockList · 5ee163e8
      Laszlo Ersek 提交于
      The vmcore must use physical addresses that are visible to the guest, not
      addresses that point into linear RAMBlocks. As first step, introduce the
      list type into which we'll collect the physical mappings in effect at the
      time of the dump.
      
      Related RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=981582Signed-off-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      5ee163e8
  10. 10 7月, 2013 1 次提交
  11. 12 6月, 2013 2 次提交
  12. 11 6月, 2013 1 次提交
  13. 21 12月, 2012 1 次提交
  14. 19 12月, 2012 2 次提交
  15. 23 10月, 2012 1 次提交
    • A
      Rename target_phys_addr_t to hwaddr · a8170e5e
      Avi Kivity 提交于
      target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
      reserved) and its purpose doesn't match the name (most target_phys_addr_t
      addresses are not target specific).  Replace it with a finger-friendly,
      standards conformant hwaddr.
      
      Outstanding patchsets can be fixed up with the command
      
        git rebase -i --exec 'find -name "*.[ch]"
                              | xargs s/target_phys_addr_t/hwaddr/g' origin
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      a8170e5e
  16. 15 6月, 2012 1 次提交
  17. 12 6月, 2012 1 次提交
  18. 07 6月, 2012 1 次提交
  19. 05 6月, 2012 4 次提交
    • W
      introduce a new monitor command 'dump-guest-memory' to dump guest's memory · 783e9b48
      Wen Congyang 提交于
      The command's usage:
         dump-guest-memory [-p] protocol [begin] [length]
      The supported protocol can be file or fd:
      1. file: the protocol starts with "file:", and the following string is
         the file's path.
      2. fd: the protocol starts with "fd:", and the following string is the
         fd's name.
      
      Note:
        1. If you want to use gdb to process the core, please specify -p option.
           The reason why the -p option is not default is:
             a. guest machine in a catastrophic state can have corrupted memory,
                which we cannot trust.
             b. The guest machine can be in read-mode even if paging is enabled.
                For example: the guest machine uses ACPI to sleep, and ACPI sleep
                state goes in real-mode.
        2. If you don't want to dump all guest's memory, please specify the start
           physical address and the length.
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      783e9b48
    • W
      Add API to get memory mapping without do paging · 2b05ab52
      Wen Congyang 提交于
      crash does not need the virtual address and physical address mapping, and the
      mapping does not include the memory that is not referenced by the page table.
      crash does not use the virtual address, so we can create the mapping for all
      physical memory(virtual address is always 0). This patch provides a API to do
      this thing, and it will be used in the following patch.
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      2b05ab52
    • W
      Add API to get memory mapping · c517076d
      Wen Congyang 提交于
      Add API to get all virtual address and physical address mapping.
      If the guest doesn't use paging, the virtual address is equal to the phyical
      address. The virtual address and physical address mapping is for gdb's user, and
      it does not include the memory that is not referenced by the page table. So if
      you want to use crash to anaylze the vmcore, please do not specify -p option.
      the reason why the -p option is not default explicitly: guest machine in a
      catastrophic state can have corrupted memory, which we cannot trust.
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      c517076d
    • W
      Add API to create memory mapping list · 80167a8a
      Wen Congyang 提交于
      The memory mapping list stores virtual address and physical address mapping.
      The virtual address and physical address are contiguous in the mapping.
      The folloing patch will use this information to create PT_LOAD in the vmcore.
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
      80167a8a