Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Mar 2017 21:53:13 +0000 (13:53 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Mar 2017 21:53:13 +0000 (13:53 -0800)
Pull vhost updates from Michael Tsirkin:
 "virtio, vhost: optimizations, fixes

  Looks like a quiet cycle for vhost/virtio, just a couple of minor
  tweaks. Most notable is automatic interrupt affinity for blk and scsi.
  Hopefully other devices are not far behind"

* tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
  virtio-console: avoid DMA from stack
  vhost: introduce O(1) vq metadata cache
  virtio_scsi: use virtio IRQ affinity
  virtio_blk: use virtio IRQ affinity
  blk-mq: provide a default queue mapping for virtio device
  virtio: provide a method to get the IRQ affinity mask for a virtqueue
  virtio: allow drivers to request IRQ affinity when creating VQs
  virtio_pci: simplify MSI-X setup
  virtio_pci: don't duplicate the msix_enable flag in struct pci_dev
  virtio_pci: use shared interrupts for virtqueues
  virtio_pci: remove struct virtio_pci_vq_info
  vhost: try avoiding avail index access when getting descriptor
  virtio_mmio: expose header to userspace

1  2 
block/Kconfig
block/Makefile
drivers/block/virtio_blk.c
drivers/crypto/virtio/virtio_crypto_core.c
drivers/gpu/drm/virtio/virtgpu_kms.c
drivers/net/virtio_net.c
drivers/s390/virtio/virtio_ccw.c
drivers/vhost/vhost.c
drivers/virtio/virtio_balloon.c
include/linux/cpuhotplug.h
include/uapi/linux/Kbuild

diff --cc block/Kconfig
Simple merge
diff --cc block/Makefile
index 2ad7c304e3f5075d943e6c57450437c610f1364f,60691949d28de658fb38fd4bcb7244bebd0c5516..081bb680789bc8f191d22950a1ab71cc97443e07
@@@ -25,7 -23,6 +25,8 @@@ obj-$(CONFIG_BLOCK_COMPAT)    += compat_io
  obj-$(CONFIG_BLK_CMDLINE_PARSER)      += cmdline-parser.o
  obj-$(CONFIG_BLK_DEV_INTEGRITY) += bio-integrity.o blk-integrity.o t10-pi.o
  obj-$(CONFIG_BLK_MQ_PCI)      += blk-mq-pci.o
+ obj-$(CONFIG_BLK_MQ_VIRTIO)   += blk-mq-virtio.o
  obj-$(CONFIG_BLK_DEV_ZONED)   += blk-zoned.o
  obj-$(CONFIG_BLK_WBT)         += blk-wbt.o
 +obj-$(CONFIG_BLK_DEBUG_FS)    += blk-mq-debugfs.o
 +obj-$(CONFIG_BLK_SED_OPAL)    += sed-opal.o
Simple merge
index 30f989a0cafca0408d753dc5fde3b36c2c4c1090,e975fa5b0a3210477df00592559dfba0c0ab4872..491866865c3397b4c2e73fdfc3444aac301f9ee4
@@@ -170,13 -169,10 +170,13 @@@ int virtio_gpu_driver_load(struct drm_d
        if (virtio_has_feature(vgdev->vdev, VIRTIO_GPU_F_VIRGL))
                vgdev->has_virgl_3d = true;
        DRM_INFO("virgl 3d acceleration %s\n",
 -               vgdev->has_virgl_3d ? "enabled" : "not available");
 +               vgdev->has_virgl_3d ? "enabled" : "not supported by host");
 +#else
 +      DRM_INFO("virgl 3d acceleration not supported by guest\n");
 +#endif
  
        ret = vgdev->vdev->config->find_vqs(vgdev->vdev, 2, vqs,
-                                           callbacks, names);
+                                           callbacks, names, NULL);
        if (ret) {
                DRM_ERROR("failed to find virt queues\n");
                goto err_vqs;
Simple merge
Simple merge
index 4269e621e254ab7acc38c81f2aafe1775e9dbd81,998bed505530df03e033719e88c5d38405d34ac6..9469364eefd73ef59fdfde46019ac6fdd1ce5538
@@@ -2239,15 -2330,11 +2330,15 @@@ bool vhost_vq_avail_empty(struct vhost_
        __virtio16 avail_idx;
        int r;
  
-       r = vhost_get_user(vq, avail_idx, &vq->avail->idx);
 +      if (vq->avail_idx != vq->last_avail_idx)
 +              return false;
 +
 -      if (r)
+       r = vhost_get_avail(vq, avail_idx, &vq->avail->idx);
 +      if (unlikely(r))
                return false;
 +      vq->avail_idx = vhost16_to_cpu(vq, avail_idx);
  
 -      return vhost16_to_cpu(vq, avail_idx) == vq->avail_idx;
 +      return vq->avail_idx == vq->last_avail_idx;
  }
  EXPORT_SYMBOL_GPL(vhost_vq_avail_empty);
  
Simple merge
Simple merge
Simple merge