1. 02 Jan, 2013 25 commits
    • Michael Tokarev's avatar
      savevm.c: cleanup system includes · 74e91370
      Michael Tokarev authored
      
      
      savevm.c suffers from the same problem as some other files.
      Some years ago savevm.c was created from vl.c, moving some
      code from there into a separate file.  At that time, all
      includes were just copied from vl.c to savevm.c, without
      checking which ones are needed and which are not.
      
      But actually most of that stuff is _not_ needed.  More, some
      stuff is wrong, for example, *BSD #ifdef'ery around <util.h>
      vs <libutil.h> - for one, it fails to build on Debian/kFreebsd.
      
      Just remove all this.  Maybe there's a possibility to clean
      it up further - like removing <windows.h> (and maybe including
      winsock.h for htons etc), and maybe it's possible to remove
      some internal #includes too, but I didn't check this.
      
      While at it, remove duplicate #include of qemu/timer.h.
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      74e91370
    • Michael Tokarev's avatar
      disallow -daemonize usage of stdio (curses display, -nographic, -serial stdio etc) · ab51b1d5
      Michael Tokarev authored
      Curses display requires stdin/out to stay on the terminal,
      so -daemonize makes no sense in this case.  Instead of
      leaving display uninitialized like is done since 995ee2bf
      
      ,
      explicitly detect this case earlier and error out.
      
      -nographic can actually be used with -daemonize, by redirecting
      everything to a null device, but the problem is that according
      to documentation and historical behavour, -nographic redirects
      guest ports to stdin/out, which, again, makes no sense in case
      of -daemonize.  Since -nographic is a legacy option, don't bother
      fixing this case (to allow -nographic and -daemonize by redirecting
      guest ports to null instead of stdin/out in this case), but disallow
      it completely instead, to stop garbling host terminal.
      
      If no display display needed and user wants to use -nographic,
      the right way to go is to use
        -serial null -parallel null -monitor none -display none -vga none
      instead of -nographic.
      
      Also prevent the same issue -- it was possible to get garbled
      host tty after
      
        -nographic -daemonize
      
      and it is still possible to have it by using
      
        -serial stdio -daemonize
      
      Fix this by disallowing opening stdio chardev when -daemonize
      is specified.
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      ab51b1d5
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'stefanha/block' into staging · 217da7fd
      Anthony Liguori authored
      
      
      * stefanha/block:
        sheepdog: pass oid directly to send_pending_req()
        sheepdog: don't update inode when create_and_write fails
        block/raw-win32: Fix compiler warnings (wrong format specifiers)
        qemu-img: report size overflow error message
        cutils: change strtosz_suffix_unit function
        virtio-blk: Return UNSUPP for unknown request types
        virtio-blk: add x-data-plane=on|off performance feature
        dataplane: add virtio-blk data plane code
        virtio-blk: restore VirtIOBlkConf->config_wce flag
        iov: add qemu_iovec_concat_iov()
        test-iov: add iov_discard_front/back() testcases
        iov: add iov_discard_front/back() to remove data
        dataplane: add Linux AIO request queue
        dataplane: add event loop
        dataplane: add virtqueue vring code
        dataplane: add host memory mapping code
        configure: add CONFIG_VIRTIO_BLK_DATA_PLANE
        raw-posix: add raw_get_aio_fd() for virtio-blk-data-plane
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      217da7fd
    • Stefan Weil's avatar
      tcg: Remove unneeded assertion · 9a8a5ae6
      Stefan Weil authored
      Commit 7f6f0ae5
      
       added two assertions.
      
      One of these assertions is not needed:
      The pointer ts is never NULL because it is initialized with the
      address of an array element.
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      Signed-off-by: default avatarStefan Weil <sw@weilnetz.de>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      9a8a5ae6
    • Liu Yuan's avatar
      sheepdog: pass oid directly to send_pending_req() · d6b1ef89
      Liu Yuan authored
      
      
      Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Cc: Kevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarLiu Yuan <tailai.ly@taobao.com>
      Reviewed-by: default avatarMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      d6b1ef89
    • Liu Yuan's avatar
      sheepdog: don't update inode when create_and_write fails · bd751f22
      Liu Yuan authored
      
      
      For the error case such as SD_RES_NO_SPACE, we shouldn't update the inode bitmap
      to avoid the scenario that the object is allocated but wasn't created at the
      server side. This will result in VM's IO error on the failed object.
      
      Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Cc: Kevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarLiu Yuan <tailai.ly@taobao.com>
      Reviewed-by: default avatarMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      bd751f22
    • Stefan Weil's avatar
      block/raw-win32: Fix compiler warnings (wrong format specifiers) · fccedc62
      Stefan Weil authored
      Commit fbcad04d
      
       added fprintf statements
      with wrong format specifiers.
      
      GetLastError() returns a DWORD which is unsigned long, so %lu must be used.
      Signed-off-by: default avatarStefan Weil <sw@weilnetz.de>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      fccedc62
    • liguang's avatar
      qemu-img: report size overflow error message · 79443397
      liguang authored
      qemu-img will complain when qcow or qcow2
      size overflow for 64 bits, report the right
      message in this condition.
      
      $./qemu-img create -f qcow2 /tmp/foo 0x10000000000000000
      before change:
      qemu-img: Invalid image size specified! You may use k, M, G or T suffixes for
      qemu-img: kilobytes, megabytes, gigabytes and terabytes.
      
      after change:
      qemu-img: Image size must be less than 8 EiB!
      
      [Resolved conflict with a9300911
      
       goto removal -- Stefan]
      Signed-off-by: default avatarliguang <lig.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      79443397
    • liguang's avatar
      cutils: change strtosz_suffix_unit function · 37edbf7e
      liguang authored
      
      
      if value to be translated is larger than INT64_MAX,
      this function will not be convenient for caller to
      be aware of it, so change a little for this.
      Signed-off-by: default avatarliguang <lig.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      37edbf7e
    • Alexey Zaytsev's avatar
      virtio-blk: Return UNSUPP for unknown request types · 9e72c450
      Alexey Zaytsev authored
      
      
      Currently, all unknown requests are treated as VIRTIO_BLK_T_IN
      Signed-off-by: default avatarAlexey Zaytsev <alexey.zaytsev@gmail.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      9e72c450
    • Stefan Hajnoczi's avatar
      virtio-blk: add x-data-plane=on|off performance feature · 392808b4
      Stefan Hajnoczi authored
      
      
      The virtio-blk-data-plane feature is easy to integrate into
      hw/virtio-blk.c.  The data plane can be started and stopped similar to
      vhost-net.
      
      Users can take advantage of the virtio-blk-data-plane feature using the
      new -device virtio-blk-pci,x-data-plane=on property.
      
      The x-data-plane name was chosen because at this stage the feature is
      experimental and likely to see changes in the future.
      
      If the VM configuration does not support virtio-blk-data-plane an error
      message is printed.  Although we could fall back to regular virtio-blk,
      I prefer the explicit approach since it prompts the user to fix their
      configuration if they want the performance benefit of
      virtio-blk-data-plane.
      
      Limitations:
       * Only format=raw is supported
       * Live migration is not supported
       * Block jobs, hot unplug, and other operations fail with -EBUSY
       * I/O throttling limits are ignored
       * Only Linux hosts are supported due to Linux AIO usage
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      392808b4
    • Stefan Hajnoczi's avatar
      dataplane: add virtio-blk data plane code · e72f66a0
      Stefan Hajnoczi authored
      
      
      virtio-blk-data-plane is a subset implementation of virtio-blk.  It only
      handles read, write, and flush requests.  It does this using a dedicated
      thread that executes an epoll(2)-based event loop and processes I/O
      using Linux AIO.
      
      This approach performs very well but can be used for raw image files
      only.  The number of IOPS achieved has been reported to be several times
      higher than the existing virtio-blk implementation.
      
      Eventually it should be possible to unify virtio-blk-data-plane with the
      main body of QEMU code once the block layer and hardware emulation is
      able to run outside the global mutex.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      e72f66a0
    • Stefan Hajnoczi's avatar
      virtio-blk: restore VirtIOBlkConf->config_wce flag · 8a873ba7
      Stefan Hajnoczi authored
      Two slightly different versions of a patch to conditionally set
      VIRTIO_BLK_F_CONFIG_WCE through the "config-wce" qdev property have been
      applied (ea776abc and eec7f96c
      
      ).  David Gibson
      <david@gibson.dropbear.id.au> noticed that the "config-wce"
      property is broken as a result and fixed it recently.
      
      The fix sets the host_features VIRTIO_BLK_F_CONFIG_WCE bit from a qdev
      property.  Unfortunately, the virtio device then has no chance to test
      for the presence of the feature bit during virtio_blk_init().
      
      Therefore, reinstate the VirtIOBlkConf->config_wce flag.  Drop the
      duplicate qdev property to set the host_features bit.  The
      VirtIOBlkConf->config_wce flag will be used by virtio-blk-data-plane in
      a later patch.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      8a873ba7
    • Stefan Hajnoczi's avatar
      iov: add qemu_iovec_concat_iov() · 530c0bbd
      Stefan Hajnoczi authored
      
      
      The qemu_iovec_concat() function copies a subset of a QEMUIOVector.  The
      new qemu_iovec_concat_iov() function does the same for a iov/cnt pair.
      
      It is easy to define qemu_iovec_concat() in terms of
      qemu_iovec_concat_iov().  The existing code is mostly unchanged, except
      for the assertion src->size >= soffset, which cannot be efficiently
      checked upfront on a iov/cnt pair.  Instead we assert upon hitting the
      end of src with an unsatisfied soffset.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      530c0bbd
    • Stefan Hajnoczi's avatar
      8962e44f
    • Stefan Hajnoczi's avatar
      iov: add iov_discard_front/back() to remove data · d0277635
      Stefan Hajnoczi authored
      
      
      The iov_discard_front/back() functions remove data from the front or
      back of the vector.  This is useful when peeling off header/footer
      structs.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      d0277635
    • Stefan Hajnoczi's avatar
      dataplane: add Linux AIO request queue · 3e9ec521
      Stefan Hajnoczi authored
      
      
      The IOQueue has a pool of iocb structs and a function to add new
      read/write requests.  Multiple requests can be added before calling the
      submit function to actually tell the host kernel to begin I/O.  This
      allows callers to batch requests and submit them in one go.
      
      The actual I/O is performed using Linux AIO.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      3e9ec521
    • Stefan Hajnoczi's avatar
      dataplane: add event loop · 71973b04
      Stefan Hajnoczi authored
      
      
      Outside the safety of the global mutex we need to poll on file
      descriptors.  I found epoll(2) is a convenient way to do that, although
      other options could replace this module in the future (such as an
      AioContext-based loop or glib's GMainLoop).
      
      One important feature of this small event loop implementation is that
      the loop can be terminated in a thread-safe way.  This allows QEMU to
      stop the data plane thread cleanly.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      71973b04
    • Stefan Hajnoczi's avatar
      dataplane: add virtqueue vring code · 88807f89
      Stefan Hajnoczi authored
      
      
      The virtio-blk-data-plane cannot access memory using the usual QEMU
      functions since it executes outside the global mutex and the memory APIs
      are this time are not thread-safe.
      
      This patch introduces a virtqueue module based on the kernel's vhost
      vring code.  The trick is that we map guest memory ahead of time and
      access it cheaply outside the global mutex.
      
      Once the hardware emulation code can execute outside the global mutex it
      will be possible to drop this code.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      88807f89
    • Stefan Hajnoczi's avatar
      dataplane: add host memory mapping code · 185ecf40
      Stefan Hajnoczi authored
      
      
      The data plane thread needs to map guest physical addresses to host
      pointers.  Normally this is done with cpu_physical_memory_map() but the
      function assumes the global mutex is held.  The data plane thread does
      not touch the global mutex and therefore needs a thread-safe memory
      mapping mechanism.
      
      Hostmem registers a MemoryListener similar to how vhost collects and
      pushes memory region information into the kernel.  There is a
      fine-grained lock on the regions list which is held during lookup and
      when installing a new regions list.
      
      When the physical memory map changes the MemoryListener callbacks are
      invoked.  They build up a new list of memory regions which is finally
      installed when the list has been completed.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      185ecf40
    • Stefan Hajnoczi's avatar
      configure: add CONFIG_VIRTIO_BLK_DATA_PLANE · 583f6e7b
      Stefan Hajnoczi authored
      
      
      The virtio-blk-data-plane feature only works with Linux AIO.  Therefore
      add a ./configure option and necessary checks to implement this
      dependency.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      583f6e7b
    • Stefan Hajnoczi's avatar
      raw-posix: add raw_get_aio_fd() for virtio-blk-data-plane · 4065742a
      Stefan Hajnoczi authored
      
      
      The raw_get_aio_fd() function allows virtio-blk-data-plane to get the
      file descriptor of a raw image file with Linux AIO enabled.  This
      interface is really a layering violation that can be resolved once the
      block layer is able to run outside the global mutex - at that point
      virtio-blk-data-plane will switch from custom Linux AIO code to using
      the block layer.
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      4065742a
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'qemu-kvm/uq/master' into staging · 34daffa0
      Anthony Liguori authored
      
      
      * qemu-kvm/uq/master:
        qemu-kvm/pci-assign: 64 bits bar emulation
        target-i386: Enabling IA32_TSC_ADJUST for QEMU KVM guest VMs
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      34daffa0
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'mst/tags/for_anthony' into staging · 079944e6
      Anthony Liguori authored
      
      
      pci,virtio
      
      This optimizes MSIX handling in virtio-pci.
      Also included is pci express capability bugfix.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      
      * mst/tags/for_anthony:
        virtio-pci: don't poll masked vectors
        msix: expose access to masked/pending state
        msi: add API to get notified about pending bit poll
        pcie: Fix bug in pcie_ext_cap_set_next
        virtio: make bindings typesafe
      079944e6
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'kraxel/seabios-a810e4e' into staging · a97ff30e
      Anthony Liguori authored
      
      
      * kraxel/seabios-a810e4e:
        Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      a97ff30e
  2. 01 Jan, 2013 7 commits
  3. 29 Dec, 2012 4 commits
  4. 28 Dec, 2012 3 commits
    • Brad Smith's avatar
      Disable semaphores fallback code for OpenBSD · 927fa909
      Brad Smith authored
      
      
      Disable the semaphores fallback code for OpenBSD as modern OpenBSD
      releases now have sem_timedwait().
      Signed-off-by: default avatarBrad Smith <brad@comstyle.com>
      Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
      927fa909
    • Alon Levy's avatar
      usb/redirect.c: unbreak compilation due to include/char/char.h · 62054c06
      Alon Levy authored
      Broken since:
      
      commit 927d4878
      
      
      Author: Paolo Bonzini <pbonzini@redhat.com>
      Date:   Mon Dec 17 18:20:05 2012 +0100
      
          softmmu: move remaining include files to include/ subdirectories
      Signed-off-by: default avatarAlon Levy <alevy@redhat.com>
      Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
      62054c06
    • Blue Swirl's avatar
      Merge branch 'qom-cpu' of git://repo.or.cz/qemu/afaerber · 4de63460
      Blue Swirl authored
      * 'qom-cpu' of git://repo.or.cz/qemu/afaerber:
        MAINTAINERS: Include X86CPU in CPU maintenance area
        cpu: Move kvm_run into CPUState
        cpu: Move kvm_state field into CPUState
        ppc_booke: Pass PowerPCCPU to ppc_booke_timers_init()
        ppc4xx_devs: Return PowerPCCPU from ppc4xx_init()
        ppc_booke: Pass PowerPCCPU to {decr,fit,wdt} timer callbacks
        ppc: Pass PowerPCCPU to [h]decr timer callbacks
        ppc: Pass PowerPCCPU to [h]decr callbacks
        ppc: Pass PowerPCCPU to ppc_set_irq()
        kvm: Pass CPUState to kvm_vcpu_ioctl()
        kvm: Pass CPUState to kvm_arch_*
        cpu: Move kvm_fd into CPUState
        qdev-properties.c: Separate core from the code used only by qemu-system-*
        qdev: Coding style fixes
        cpu: Introduce CPUListState struct
        target-alpha: Add support for -cpu ?
        target-alpha: Turn CPU definitions into subclasses
        target-alpha: Avoid leaking the alarm timer over reset
        alpha: Pass AlphaCPU array to Typhoon
        target-alpha: Let cpu_alpha_init() return AlphaCPU
      4de63460
  5. 26 Dec, 2012 1 commit
    • Michael S. Tsirkin's avatar
      virtio-pci: don't poll masked vectors · 89d62be9
      Michael S. Tsirkin authored
      
      
      At the moment, when irqfd is in use but a vector is masked,
      qemu will poll it and handle vector masks in userspace.
      Since almost no one ever looks at the pending bits,
      it is better to defer this until pending bits
      are actually read.
      Implement this optimization using the new poll notifier.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      89d62be9