xref: /qemu/include/hw/virtio/vhost-scsi-common.h (revision 21596064081e8d0c0153f68714981c7f0e040973)
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