qemu-e2k/hw/virtio
Stefan Hajnoczi 332fa82d09 Revert "virtio: turn vq->notification into a nested counter"
This reverts commit aff8fd18f1.

Both virtio-net and virtio-crypto do not balance
virtio_queue_set_notification() enable and disable calls.  This makes
the notifications_disabled counter unreliable and Doug Goldstein
reported the following assertion failure:

  #3  0x00007ffff44d1c62 in __GI___assert_fail (
      assertion=assertion@entry=0x555555ae8e8a "vq->notification_disabled > 0",
      file=file@entry=0x555555ae89c0 "/home/doug/work/qemu/hw/virtio/virtio.c",
      line=line@entry=215,
      function=function@entry=0x555555ae9630 <__PRETTY_FUNCTION__.43707>
      "virtio_queue_set_notification") at assert.c:101
  #4  0x00005555557f25d6 in virtio_queue_set_notification (vq=0x55555666aa90,
      enable=enable@entry=1) at /home/doug/work/qemu/hw/virtio/virtio.c:215
  #5  0x00005555557dc311 in virtio_net_has_buffers (q=<optimized out>,
      q=<optimized out>, bufsize=102)
      at /home/doug/work/qemu/hw/net/virtio-net.c:1008
  #6  virtio_net_receive (nc=<optimized out>, buf=0x555557386b88 "", size=102)
      at /home/doug/work/qemu/hw/net/virtio-net.c:1148
  #7  0x00005555559cad33 in nc_sendv_compat (flags=<optimized out>, iovcnt=1,
      iov=0x7fffead746d0, nc=0x55555788b340) at net/net.c:705
  #8  qemu_deliver_packet_iov (sender=<optimized out>, flags=<optimized out>,
      iov=0x7fffead746d0, iovcnt=1, opaque=0x55555788b340) at net/net.c:732
  #9  0x00005555559cd929 in qemu_net_queue_deliver (size=<optimized out>,
      data=<optimized out>, flags=<optimized out>, sender=<optimized out>,
      queue=0x55555788b550) at net/queue.c:164
  #10 qemu_net_queue_flush (queue=0x55555788b550) at net/queue.c:261

This patch is safe to revert since it's just an optimization for
virtqueue polling.  The next patch will improve the situation again
without resorting to nesting.

Reported-by: Doug Goldstein <cardoe@cardoe.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Richard Henderson <rth@twiddle.net>
Tested-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-01-18 22:59:53 +02:00
..
Makefile.objs virtio-crypto-pci: add virtio crypto pci support 2016-11-01 19:21:08 +02:00
trace-events balloon: Don't balloon roms 2017-01-10 07:02:52 +02:00
vhost-backend.c
vhost-user.c vhost-user: Add MTU protocol feature and op 2017-01-10 07:02:53 +02:00
vhost-vsock.c
vhost.c net: vhost stop updates virtio queue state 2017-01-10 07:02:53 +02:00
virtio-balloon.c balloon: Don't balloon roms 2017-01-10 07:02:52 +02:00
virtio-bus.c virtio: convert to use DMA api 2017-01-10 05:56:58 +02:00
virtio-crypto-pci.c virtio-crypto-pci: tag virtio-crypto device hot pluggable 2017-01-10 07:02:52 +02:00
virtio-crypto.c virtio-crypto: zeroize the key material before free 2017-01-10 07:02:52 +02:00
virtio-mmio.c virtio: avoid using guest_notifier_mask in vhost-user mode 2016-12-16 01:14:54 +02:00
virtio-pci.c virtio-net: enable ioeventfd even if vhost=off 2017-01-18 22:59:53 +02:00
virtio-pci.h virtio-pci: address space translation service (ATS) support 2017-01-10 05:56:59 +02:00
virtio-rng.c
virtio.c Revert "virtio: turn vq->notification into a nested counter" 2017-01-18 22:59:53 +02:00