Fix compile error when make tools/virtio,
port over the virtio_device member map and vmap to tools.

Fixes: bee8c7c24b73 ("virtio: introduce map ops in virtio core")
Signed-off-by: Yufeng Wang <[email protected]>
Tested-by: Yuedong Wang <[email protected]>
Tested-by: Yuexuan Wang <[email protected]>
Tested-by: Haimei Qu <[email protected]>
---
 tools/virtio/linux/virtio.h        | 28 ++++++++++++++++++++++++++++
 tools/virtio/linux/virtio_config.h | 21 +++++++++++++++++++++
 2 files changed, 49 insertions(+)

diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h
index 5d3440f474dd..4c2c87336d29 100644
--- a/tools/virtio/linux/virtio.h
+++ b/tools/virtio/linux/virtio.h
@@ -4,17 +4,24 @@
 #include <linux/scatterlist.h>
 #include <linux/kernel.h>
 #include <linux/spinlock.h>
+#include <linux/dma-mapping.h>
 
 struct device {
        void *parent;
 };
 
+union virtio_map {
+       struct device *dma_dev;
+};
+
 struct virtio_device {
        struct device dev;
        u64 features;
        struct list_head vqs;
        spinlock_t vqs_list_lock;
        const struct virtio_config_ops *config;
+       const struct virtio_map_ops *map;
+       union virtio_map vmap;
 };
 
 struct virtqueue {
@@ -69,4 +76,25 @@ struct virtqueue *vring_new_virtqueue(unsigned int index,
                                      const char *name);
 void vring_del_virtqueue(struct virtqueue *vq);
 
+void *virtqueue_map_alloc_coherent(struct virtio_device *vdev,
+                                  union virtio_map mapping_token,
+                                  size_t size, dma_addr_t *dma_handle,
+                                  gfp_t gfp);
+
+void virtqueue_map_free_coherent(struct virtio_device *vdev,
+                                union virtio_map mapping_token,
+                                size_t size, void *vaddr,
+                                dma_addr_t dma_handle);
+
+dma_addr_t virtqueue_map_page_attrs(const struct virtqueue *_vq,
+                                   struct page *page,
+                                   unsigned long offset,
+                                   size_t size,
+                                   enum dma_data_direction dir,
+                                   unsigned long attrs);
+
+void virtqueue_unmap_page_attrs(const struct virtqueue *_vq,
+                               dma_addr_t dma_handle,
+                               size_t size, enum dma_data_direction dir,
+                               unsigned long attrs);
 #endif
diff --git a/tools/virtio/linux/virtio_config.h 
b/tools/virtio/linux/virtio_config.h
index 42a564f22f2d..ee696dad294a 100644
--- a/tools/virtio/linux/virtio_config.h
+++ b/tools/virtio/linux/virtio_config.h
@@ -10,6 +10,27 @@ struct virtio_config_ops {
        int (*enable_vq_after_reset)(struct virtqueue *vq);
 };
 
+struct virtio_map_ops {
+       dma_addr_t (*map_page)(union virtio_map map, struct page *page,
+                              unsigned long offset, size_t size,
+                              enum dma_data_direction dir, unsigned long 
attrs);
+       void (*unmap_page)(union virtio_map map, dma_addr_t map_handle,
+                          size_t size, enum dma_data_direction dir,
+                          unsigned long attrs);
+       void (*sync_single_for_cpu)(union virtio_map map, dma_addr_t map_handle,
+                                   size_t size, enum dma_data_direction dir);
+       void (*sync_single_for_device)(union virtio_map map,
+                                      dma_addr_t map_handle, size_t size,
+                                      enum dma_data_direction dir);
+       void *(*alloc)(union virtio_map map, size_t size,
+                      dma_addr_t *map_handle, gfp_t gfp);
+       void (*free)(union virtio_map map, size_t size, void *vaddr,
+                    dma_addr_t map_handle, unsigned long attrs);
+       bool (*need_sync)(union virtio_map map, dma_addr_t map_handle);
+       int (*mapping_error)(union virtio_map map, dma_addr_t map_handle);
+       size_t (*max_mapping_size)(union virtio_map map);
+};
+
 /*
  * __virtio_test_bit - helper to test feature bits. For use by transports.
  *                     Devices should normally use virtio_has_feature,
-- 
2.43.0


Reply via email to