vq = portdev->c_ovq;
  
        sg_init_one(sg, &cpkt, sizeof(cpkt));
-       if (virtqueue_add_buf(vq, sg, 1, 0, &cpkt, GFP_ATOMIC) == 0) {
 +
 +      spin_lock(&portdev->c_ovq_lock);
+       if (virtqueue_add_outbuf(vq, sg, 1, &cpkt, GFP_ATOMIC) == 0) {
                virtqueue_kick(vq);
                while (!virtqueue_get_buf(vq, &len))
                        cpu_relax();
 
  cfspi_slave-objs := caif_spi.o caif_spi_slave.o
  obj-$(CONFIG_CAIF_SPI_SLAVE) += cfspi_slave.o
  
 -# Shared memory
 -caif_shm-objs := caif_shmcore.o caif_shm_u5500.o
 -obj-$(CONFIG_CAIF_SHM) += caif_shm.o
 -
  # HSI interface
  obj-$(CONFIG_CAIF_HSI) += caif_hsi.o
+ 
+ # Virtio interface
+ obj-$(CONFIG_CAIF_VIRTIO) += caif_virtio.o
 
          To compile this driver as a module, choose M here: the module will
          be called vhost_net.
  
 -if STAGING
 -source "drivers/vhost/Kconfig.tcm"
 -endif
 +config VHOST_SCSI
 +      tristate "VHOST_SCSI TCM fabric driver"
 +      depends on TARGET_CORE && EVENTFD && m
++      select VHOST_RING
 +      default n
 +      ---help---
 +      Say M here to enable the vhost_scsi TCM fabric module
 +      for use with virtio-scsi guests
+ 
+ config VHOST_RING
+       tristate
+       ---help---
+         This option is selected by any driver which needs to access
+         the host side of a virtio ring.
 -
 
  obj-$(CONFIG_VHOST_NET) += vhost_net.o
  vhost_net-y := vhost.o net.o
  
 -obj-$(CONFIG_TCM_VHOST) += tcm_vhost.o
 +obj-$(CONFIG_VHOST_SCSI) += vhost_scsi.o
 +vhost_scsi-y := scsi.o
+ 
+ obj-$(CONFIG_VHOST_RING) += vringh.o