qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

vhost-vdpa.h (1334B)


      1 /*
      2  * vhost-vdpa.h
      3  *
      4  * Copyright(c) 2017-2018 Intel Corporation.
      5  * Copyright(c) 2020 Red Hat, Inc.
      6  *
      7  * This work is licensed under the terms of the GNU GPL, version 2 or later.
      8  * See the COPYING file in the top-level directory.
      9  *
     10  */
     11 
     12 #ifndef HW_VIRTIO_VHOST_VDPA_H
     13 #define HW_VIRTIO_VHOST_VDPA_H
     14 
     15 #include <gmodule.h>
     16 
     17 #include "hw/virtio/vhost-iova-tree.h"
     18 #include "hw/virtio/vhost-shadow-virtqueue.h"
     19 #include "hw/virtio/virtio.h"
     20 #include "standard-headers/linux/vhost_types.h"
     21 
     22 typedef struct VhostVDPAHostNotifier {
     23     MemoryRegion mr;
     24     void *addr;
     25 } VhostVDPAHostNotifier;
     26 
     27 typedef struct vhost_vdpa {
     28     int device_fd;
     29     int index;
     30     uint32_t msg_type;
     31     bool iotlb_batch_begin_sent;
     32     MemoryListener listener;
     33     struct vhost_vdpa_iova_range iova_range;
     34     uint64_t acked_features;
     35     bool shadow_vqs_enabled;
     36     /* IOVA mapping used by the Shadow Virtqueue */
     37     VhostIOVATree *iova_tree;
     38     GPtrArray *shadow_vqs;
     39     const VhostShadowVirtqueueOps *shadow_vq_ops;
     40     void *shadow_vq_ops_opaque;
     41     struct vhost_dev *dev;
     42     VhostVDPAHostNotifier notifier[VIRTIO_QUEUE_MAX];
     43 } VhostVDPA;
     44 
     45 int vhost_vdpa_dma_map(struct vhost_vdpa *v, hwaddr iova, hwaddr size,
     46                        void *vaddr, bool readonly);
     47 int vhost_vdpa_dma_unmap(struct vhost_vdpa *v, hwaddr iova, hwaddr size);
     48 
     49 #endif