1. 24 12月, 2013 1 次提交
  2. 10 12月, 2013 4 次提交
  3. 25 8月, 2013 1 次提交
  4. 12 8月, 2013 1 次提交
  5. 09 8月, 2013 1 次提交
  6. 19 7月, 2013 2 次提交
    • P
      virtio: Support transports which can specify the vring alignment · 6ce69d1c
      Peter Maydell 提交于
      Support virtio transports which can specify the vring alignment
      (ie where the guest communicates this to the host) by providing
      a new virtio_queue_set_align() function. (The default alignment
      remains as before.)
      
      Transports which wish to make use of this must set the
      has_variable_vring_alignment field in their VirtioBusClass
      struct to true; they can then change the alignment via
      virtio_queue_set_align().
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1373977512-28932-5-git-send-email-peter.maydell@linaro.org
      6ce69d1c
    • P
      virtio: Add support for guest setting of queue size · e63c0ba1
      Peter Maydell 提交于
      The MMIO virtio transport spec allows the guest to tell the host how
      large the queue size is. Add virtio_queue_set_num() function which
      implements this in the QEMU common virtio support code.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1373977512-28932-4-git-send-email-peter.maydell@linaro.org
      e63c0ba1
  7. 09 5月, 2013 1 次提交
  8. 04 5月, 2013 1 次提交
  9. 25 4月, 2013 3 次提交
  10. 09 4月, 2013 2 次提交
  11. 01 3月, 2013 1 次提交
    • P
      hw: include hw header files with full paths · 83c9f4ca
      Paolo Bonzini 提交于
      Done with this script:
      
      cd hw
      for i in `find . -name '*.h' | sed 's/^..//'`; do
        echo '\,^#.*include.*["<]'$i'[">], s,'$i',hw/&,'
      done | sed -i -f - `find . -type f`
      
      This is so that paths remain valid as files are moved.
      
      Instead, files in hw/dataplane are referenced with the relative path.
      We know they are not going to move to include/, and they are the only
      include files that are in subdirectories _and_ move.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      83c9f4ca
  12. 02 2月, 2013 2 次提交
  13. 22 1月, 2013 1 次提交
  14. 20 12月, 2012 1 次提交
  15. 19 12月, 2012 1 次提交
  16. 30 11月, 2012 1 次提交
  17. 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
  18. 28 9月, 2012 3 次提交
  19. 07 8月, 2012 1 次提交
  20. 12 7月, 2012 2 次提交
  21. 25 4月, 2012 3 次提交
    • M
      virtio: order index/descriptor reads · a821ce59
      Michael S. Tsirkin 提交于
      virtio has the equivalent of:
      
      	if (vq->last_avail_index != vring_avail_idx(vq)) {
      		read descriptor head at vq->last_avail_index;
      	}
      
      In theory, processor can reorder descriptor head
      read to happen speculatively before the index read.
      this would trigger the following race:
      
      	host descriptor head read <- reads invalid head from ring
      		guest writes valid descriptor head
      		guest writes avail index
      	host avail index read <- observes valid index
      
      as a result host will use an invalid head value.
      This was not observed in the field by me but after
      the experience with the previous two races
      I think it is prudent to address this theoretical race condition.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      a821ce59
    • M
      virtio: add missing mb() on enable notification · 92045d80
      Michael S. Tsirkin 提交于
      This fixes an issue dual to the one fixed by
      patch 'virtio: add missing mb() on notification'
      and applies on top.
      
      In this case, to enable vq kick to exit to host,
      qemu writes out used flag then reads the
      avail index. if these are reordered we get a race:
      
          host avail index read: ring is empty
          		guest avail index write
          		guest flag read: exit disabled
          host used flag write: enable exit
      
      which results in a lost exit: host will never be notified about the
      avail index update.  Again, happens in the field but only seems to
      trigger on some specific hardware.
      
      Insert an smp_mb barrier operation to ensure the correct ordering.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      92045d80
    • M
      virtio: add missing mb() on notification · a281ebc1
      Michael S. Tsirkin 提交于
      During normal operation, virtio first writes a used index
      and then checks whether it should interrupt the guest
      by reading guest avail index/flag values.
      
      Guest does the reverse: writes the index/flag,
      then checks the used ring.
      
      The ordering is important: if host avail flag read bypasses the used
      index write, we could in effect get this timing:
      
      host avail flag read
      		guest enable interrupts: avail flag write
      		guest check used ring: ring is empty
      host used index write
      
      which results in a lost interrupt: guest will never be notified
      about the used ring update.
      
      This actually can happen when using kvm with an io thread,
      such that the guest vcpu and qemu run on different host cpus,
      and this has actually been observed in the field
      (but only seems to trigger on very specific processor types)
      with userspace virtio: vhost has the necessary smp_mb()
      in place to prevent the regordering, so the same workload stalls
      forever waiting for an interrupt with vhost=off but works
      fine with vhost=on.
      
      Insert an smp_mb barrier operation in userspace virtio to
      ensure the correct ordering.
      Applying this patch fixed the race condition we have observed.
      Tested on x86_64. I checked the code generated by the new macro
      for i386 and ppc but didn't run virtio.
      
      Note: mb could in theory be implemented by __sync_synchronize, but this
      would make us hit old GCC bugs. Besides old GCC
      not implementing __sync_synchronize at all, there were bugs
      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36793
      in this functionality as recently as in 4.3.
      
      As we need asm for rmb,wmb anyway, it's just as well to
      use it for mb.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      a281ebc1
  22. 19 4月, 2012 1 次提交
  23. 10 2月, 2012 1 次提交
  24. 21 1月, 2012 1 次提交
    • A
      virtio: change memcpy to guest reads · 06dbfc6f
      Alexander Graf 提交于
      When accessing the device specific virtio config space, we memcpy
      the data into a variable in QEMU. At that point we're basically
      pulling host endianness into the game which is a really bad idea.
      
      So instead, let's use the target specific load/store helpers for
      memory pointers which fetch things in target endianness. The whole
      array is already populated in target endianness anyways
      (see virtio-blk).
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Reviewed-by: NAnthony Liguori <aliguori@us.ibm.com>
      06dbfc6f
  25. 29 11月, 2011 1 次提交
  26. 24 9月, 2011 1 次提交
  27. 17 9月, 2011 1 次提交