1b430a2bdSLongpeng /* 2b430a2bdSLongpeng * Vhost Vdpa Device 3b430a2bdSLongpeng * 4b430a2bdSLongpeng * Copyright (c) Huawei Technologies Co., Ltd. 2022. All Rights Reserved. 5b430a2bdSLongpeng * 6b430a2bdSLongpeng * Authors: 7b430a2bdSLongpeng * Longpeng <longpeng2@huawei.com> 8b430a2bdSLongpeng * 9b430a2bdSLongpeng * Largely based on the "vhost-user-blk.h" implemented by: 10b430a2bdSLongpeng * Changpeng Liu <changpeng.liu@intel.com> 11b430a2bdSLongpeng * 12b430a2bdSLongpeng * This work is licensed under the terms of the GNU LGPL, version 2 or later. 13b430a2bdSLongpeng * See the COPYING.LIB file in the top-level directory. 14b430a2bdSLongpeng */ 15b430a2bdSLongpeng #ifndef _VHOST_VDPA_DEVICE_H 16b430a2bdSLongpeng #define _VHOST_VDPA_DEVICE_H 17b430a2bdSLongpeng 18b430a2bdSLongpeng #include "hw/virtio/vhost.h" 19b430a2bdSLongpeng #include "hw/virtio/vhost-vdpa.h" 20b430a2bdSLongpeng #include "qom/object.h" 21b430a2bdSLongpeng 22b430a2bdSLongpeng 23b430a2bdSLongpeng #define TYPE_VHOST_VDPA_DEVICE "vhost-vdpa-device" 24b430a2bdSLongpeng OBJECT_DECLARE_SIMPLE_TYPE(VhostVdpaDevice, VHOST_VDPA_DEVICE) 25b430a2bdSLongpeng 26b430a2bdSLongpeng struct VhostVdpaDevice { 27b430a2bdSLongpeng VirtIODevice parent_obj; 28b430a2bdSLongpeng char *vhostdev; 29b430a2bdSLongpeng int vhostfd; 30b430a2bdSLongpeng int32_t bootindex; 31b430a2bdSLongpeng uint32_t vdev_id; 32b430a2bdSLongpeng uint32_t num_queues; 33b430a2bdSLongpeng struct vhost_dev dev; 34b430a2bdSLongpeng struct vhost_vdpa vdpa; 35b430a2bdSLongpeng VirtQueue **virtqs; 36b430a2bdSLongpeng uint8_t *config; 37b430a2bdSLongpeng int config_size; 38b430a2bdSLongpeng uint16_t queue_size; 39b430a2bdSLongpeng bool started; 40b430a2bdSLongpeng int (*post_init)(VhostVdpaDevice *v, Error **errp); 41b430a2bdSLongpeng }; 42b430a2bdSLongpeng 43b430a2bdSLongpeng #endif 44