2 * vhost_scsi host device
4 * Copyright IBM, Corp. 2011
7 * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
9 * This work is licensed under the terms of the GNU LGPL, version 2 or later.
10 * See the COPYING.LIB file in the top-level directory.
17 #include "qemu-common.h"
19 #include "hw/virtio/virtio-scsi.h"
20 #include "hw/virtio/vhost.h"
23 * Used by QEMU userspace to ensure a consistent vhost-scsi ABI.
25 * ABI Rev 0: July 2012 version starting point for v3.6-rc merge candidate +
26 * RFC-v2 vhost-scsi userspace. Add GET_ABI_VERSION ioctl usage
27 * ABI Rev 1: January 2013. Ignore vhost_tpgt filed in struct vhost_scsi_target.
28 * All the targets under vhost_wwpn can be seen and used by guest.
31 #define VHOST_SCSI_ABI_VERSION 1
33 /* TODO #include <linux/vhost.h> properly */
34 /* For VHOST_SCSI_SET_ENDPOINT/VHOST_SCSI_CLEAR_ENDPOINT ioctl */
35 struct vhost_scsi_target {
38 unsigned short vhost_tpgt;
39 unsigned short reserved;
42 enum vhost_scsi_vq_list {
43 VHOST_SCSI_VQ_CONTROL = 0,
44 VHOST_SCSI_VQ_EVENT = 1,
45 VHOST_SCSI_VQ_NUM_FIXED = 2,
48 #define VHOST_VIRTIO 0xAF
49 #define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
50 #define VHOST_SCSI_CLEAR_ENDPOINT _IOW(VHOST_VIRTIO, 0x41, struct vhost_scsi_target)
51 #define VHOST_SCSI_GET_ABI_VERSION _IOW(VHOST_VIRTIO, 0x42, int)
53 #define TYPE_VHOST_SCSI "vhost-scsi"
54 #define VHOST_SCSI(obj) \
55 OBJECT_CHECK(VHostSCSI, (obj), TYPE_VHOST_SCSI)
57 typedef struct VHostSCSI {
58 VirtIOSCSICommon parent_obj;
60 Error *migration_blocker;