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
 
        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;
 
        __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);