1. 30 8月, 2018 1 次提交
  2. 03 7月, 2018 1 次提交
    • G
      vga: disable global_vmstate for 3.0+ machine types · 1fcfdc43
      Gerd Hoffmann 提交于
      Move global_vmstate from vga_common_init() parameter to VGACommonState
      field.  Set global_vmstate to true for isa vga devices, so nothing
      changes here.  virtio-vga and secondary-vga already set global_vmstate
      to false so no change here either.  All other pci vga devices get a new
      global-vmstate property, defaulting to false.  A compat property flips
      it to true for older machine types.
      
      With this in place you don't get a vmstate section naming conflict any
      more when adding multiple pci vga devices to your vm.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-Id: <20180702163345.17892-1-kraxel@redhat.com>
      1fcfdc43
  3. 02 7月, 2018 1 次提交
  4. 18 12月, 2017 1 次提交
  5. 10 11月, 2017 1 次提交
  6. 15 10月, 2017 1 次提交
  7. 15 7月, 2017 2 次提交
  8. 28 6月, 2017 1 次提交
  9. 24 4月, 2017 1 次提交
  10. 13 9月, 2016 1 次提交
  11. 06 6月, 2016 4 次提交
    • G
      vmsvga: don't process more than 1024 fifo commands at once · 4e68a0ee
      Gerd Hoffmann 提交于
      vmsvga_fifo_run is called in regular intervals (on each display update)
      and will resume where it left off.  So we can simply exit the loop,
      without having to worry about how processing will continue.
      
      Fixes: CVE-2016-4453
      Cc: qemu-stable@nongnu.org
      Cc: P J P <ppandit@redhat.com>
      Reported-by: N李强 <liqiang6-s@360.cn>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1464592161-18348-5-git-send-email-kraxel@redhat.com
      4e68a0ee
    • G
      vmsvga: shadow fifo registers · 7e486f75
      Gerd Hoffmann 提交于
      The fifo is normal ram.  So kvm vcpu threads and qemu iothread can
      access the fifo in parallel without syncronization.  Which in turn
      implies we can't use the fifo pointers in-place because the guest
      can try changing them underneath us.  So add shadows for them, to
      make sure the guest can't modify them after we've applied sanity
      checks.
      
      Fixes: CVE-2016-4454
      Cc: qemu-stable@nongnu.org
      Cc: P J P <ppandit@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1464592161-18348-4-git-send-email-kraxel@redhat.com
      7e486f75
    • G
      vmsvga: add more fifo checks · c2e3c54d
      Gerd Hoffmann 提交于
      Make sure all fifo ptrs are within range.
      
      Fixes: CVE-2016-4454
      Cc: qemu-stable@nongnu.org
      Cc: P J P <ppandit@redhat.com>
      Reported-by: N李强 <liqiang6-s@360.cn>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1464592161-18348-3-git-send-email-kraxel@redhat.com
      c2e3c54d
    • G
      vmsvga: move fifo sanity checks to vmsvga_fifo_length · 52136026
      Gerd Hoffmann 提交于
      Sanity checks are applied when the fifo is enabled by the guest
      (SVGA_REG_CONFIG_DONE write).  Which doesn't help much if the guest
      changes the fifo registers afterwards.  Move the checks to
      vmsvga_fifo_length so they are done each time qemu is about to read
      from the fifo.
      
      Fixes: CVE-2016-4454
      Cc: qemu-stable@nongnu.org
      Cc: P J P <ppandit@redhat.com>
      Reported-by: N李强 <liqiang6-s@360.cn>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 1464592161-18348-2-git-send-email-kraxel@redhat.com
      52136026
  12. 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
  13. 29 1月, 2016 1 次提交
  14. 20 10月, 2015 1 次提交
  15. 18 9月, 2015 1 次提交
    • M
      Fix bad error handling after memory_region_init_ram() · f8ed85ac
      Markus Armbruster 提交于
      Symptom:
      
          $ qemu-system-x86_64 -m 10000000
          Unexpected error in ram_block_add() at /work/armbru/qemu/exec.c:1456:
          upstream-qemu: cannot set up guest memory 'pc.ram': Cannot allocate memory
          Aborted (core dumped)
      
      Root cause: commit ef701d7b screwed up handling of out-of-memory
      conditions.  Before the commit, we report the error and exit(1), in
      one place, ram_block_add().  The commit lifts the error handling up
      the call chain some, to three places.  Fine.  Except it uses
      &error_abort in these places, changing the behavior from exit(1) to
      abort(), and thus undoing the work of commit 39228250 "exec: Don't
      abort when we can't allocate guest memory".
      
      The three places are:
      
      * memory_region_init_ram()
      
        Commit 49946538 (right after commit ef701d7b) lifted the error
        handling further, through memory_region_init_ram(), multiplying the
        incorrect use of &error_abort.  Later on, imitation of existing
        (bad) code may have created more.
      
      * memory_region_init_ram_ptr()
      
        The &error_abort is still there.
      
      * memory_region_init_rom_device()
      
        Doesn't need fixing, because commit 33e0eb52 (soon after commit
        ef701d7b) lifted the error handling further, and in the process
        changed it from &error_abort to passing it up the call chain.
        Correct, because the callers are realize() methods.
      
      Fix the error handling after memory_region_init_ram() with a
      Coccinelle semantic patch:
      
          @r@
          expression mr, owner, name, size, err;
          position p;
          @@
                  memory_region_init_ram(mr, owner, name, size,
          (
          -                              &error_abort
          +                              &error_fatal
          |
                                         err@p
          )
                                        );
          @script:python@
              p << r.p;
          @@
          print "%s:%s:%s" % (p[0].file, p[0].line, p[0].column)
      
      When the last argument is &error_abort, it gets replaced by
      &error_fatal.  This is the fix.
      
      If the last argument is anything else, its position is reported.  This
      lets us check the fix is complete.  Four positions get reported:
      
      * ram_backend_memory_alloc()
      
        Error is passed up the call chain, ultimately through
        user_creatable_complete().  As far as I can tell, it's callers all
        handle the error sanely.
      
      * fsl_imx25_realize(), fsl_imx31_realize(), dp8393x_realize()
      
        DeviceClass.realize() methods, errors handled sanely further up the
        call chain.
      
      We're good.  Test case again behaves:
      
          $ qemu-system-x86_64 -m 10000000
          qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory
          [Exit 1 ]
      
      The next commits will repair the rest of commit ef701d7b's damage.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Message-Id: <1441983105-26376-3-git-send-email-armbru@redhat.com>
      Reviewed-by: NPeter Crosthwaite <crosthwaite.peter@gmail.com>
      f8ed85ac
  16. 05 6月, 2015 1 次提交
    • P
      memory: differentiate memory_region_is_logging and memory_region_get_dirty_log_mask · 2d1a35be
      Paolo Bonzini 提交于
      For now memory regions only track DIRTY_MEMORY_VGA individually, but
      this will change soon.  To support this, split memory_region_is_logging
      in two functions: one that returns a given bit from dirty_log_mask,
      and one that returns the entire mask.  memory_region_is_logging gets an
      extra parameter so that the compiler flags misuse.
      
      While VGA-specific users (including the Xen listener!) will want to keep
      checking that bit, KVM and vhost check for "any bit except migration"
      (because migration is handled via the global start/stop listener
      callbacks).
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      2d1a35be
  17. 26 2月, 2015 1 次提交
  18. 29 10月, 2014 2 次提交
  19. 28 10月, 2014 3 次提交
  20. 09 9月, 2014 1 次提交
  21. 05 9月, 2014 1 次提交
    • G
      console: stop using PixelFormat · 30f1e661
      Gerd Hoffmann 提交于
      With this patch the qemu console core stops using PixelFormat and pixman
      format codes side-by-side, pixman format code is the primary way to
      specify the DisplaySurface format:
      
       * DisplaySurface stops carrying a PixelFormat field.
       * qemu_create_displaysurface_from() expects a pixman format now.
      
      Functions to convert PixelFormat to pixman_format_code_t (and back)
      exist for those who still use PixelFormat.   As PixelFormat allows
      easy access to masks and shifts it will probably continue to exist.
      
      [ xenfb added by Benjamin Herrenschmidt ]
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      30f1e661
  22. 16 6月, 2014 1 次提交
  23. 11 6月, 2014 1 次提交
  24. 28 4月, 2014 1 次提交
  25. 18 3月, 2014 1 次提交
  26. 05 3月, 2014 1 次提交
  27. 10 2月, 2014 1 次提交
  28. 03 12月, 2013 1 次提交
  29. 29 7月, 2013 1 次提交
  30. 23 7月, 2013 2 次提交
  31. 04 7月, 2013 2 次提交