195615ce5SFelipe Franciosi /* 295615ce5SFelipe Franciosi * vhost_scsi host device 395615ce5SFelipe Franciosi * 495615ce5SFelipe Franciosi * Copyright (c) 2016 Nutanix Inc. All rights reserved. 595615ce5SFelipe Franciosi * 695615ce5SFelipe Franciosi * Author: 795615ce5SFelipe Franciosi * Felipe Franciosi <felipe@nutanix.com> 895615ce5SFelipe Franciosi * 995615ce5SFelipe Franciosi * This work is licensed under the terms of the GNU LGPL, version 2 or later. 1095615ce5SFelipe Franciosi * See the COPYING.LIB file in the top-level directory. 1195615ce5SFelipe Franciosi * 1295615ce5SFelipe Franciosi */ 1395615ce5SFelipe Franciosi 1495615ce5SFelipe Franciosi #ifndef VHOST_SCSI_COMMON_H 1595615ce5SFelipe Franciosi #define VHOST_SCSI_COMMON_H 1695615ce5SFelipe Franciosi 1795615ce5SFelipe Franciosi #include "hw/virtio/virtio-scsi.h" 1895615ce5SFelipe Franciosi #include "hw/virtio/vhost.h" 1995615ce5SFelipe Franciosi #include "hw/fw-path-provider.h" 20db1015e9SEduardo Habkost #include "qom/object.h" 2195615ce5SFelipe Franciosi 2295615ce5SFelipe Franciosi #define TYPE_VHOST_SCSI_COMMON "vhost-scsi-common" 238063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(VHostSCSICommon, VHOST_SCSI_COMMON) 2495615ce5SFelipe Franciosi 25db1015e9SEduardo Habkost struct VHostSCSICommon { 2695615ce5SFelipe Franciosi VirtIOSCSICommon parent_obj; 2795615ce5SFelipe Franciosi 2895615ce5SFelipe Franciosi Error *migration_blocker; 2995615ce5SFelipe Franciosi 3095615ce5SFelipe Franciosi struct vhost_dev dev; 3195615ce5SFelipe Franciosi const int *feature_bits; 3295615ce5SFelipe Franciosi int32_t bootindex; 3395615ce5SFelipe Franciosi int channel; 3495615ce5SFelipe Franciosi int target; 3595615ce5SFelipe Franciosi int lun; 36eb5757fcSGreg Edwards uint64_t host_features; 37b3e89c94SLiran Alon bool migratable; 38b82526c7SLi Feng 39b82526c7SLi Feng struct vhost_inflight *inflight; 40db1015e9SEduardo Habkost }; 4195615ce5SFelipe Franciosi 427962e432SLi Feng int vhost_scsi_common_start(VHostSCSICommon *vsc, Error **errp); 43*bc85aae4SHaoqian He int vhost_scsi_common_stop(VHostSCSICommon *vsc); 4495615ce5SFelipe Franciosi char *vhost_scsi_common_get_fw_dev_path(FWPathProvider *p, BusState *bus, 4595615ce5SFelipe Franciosi DeviceState *dev); 4695615ce5SFelipe Franciosi void vhost_scsi_common_set_config(VirtIODevice *vdev, const uint8_t *config); 4795615ce5SFelipe Franciosi uint64_t vhost_scsi_common_get_features(VirtIODevice *vdev, uint64_t features, 4895615ce5SFelipe Franciosi Error **errp); 4995615ce5SFelipe Franciosi 5095615ce5SFelipe Franciosi #endif /* VHOST_SCSI_COMMON_H */ 51