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