Skip to contentSkip to conversation

tools/virtio: cleanups, fixes

PATCH In review Michael S. Tsirkin 2 participants 20 messages Dec 4, 2025 – Dec 11, 2025 virtio core

lore
Share & tools
lore

Michael S. Tsirkin

author maintainer
#0 lore raw

cover tools/virtio: cleanups, fixes

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Michael S. Tsirkin (14):
tools/virtio: fix up compiler.h stub
virtio: make it self-contained
tools/virtio: use kernel's virtio.h tools/virtio: add struct module forward declaration tools/virtio: stub DMA mapping functions tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs tools/virtio: add ucopysize.h stub
tools/virtio: pass KCFLAGS to module build tools/virtio: add struct cpumask to cpumask.h tools/virtio: stub might_sleep and synchronize_rcu tools/virtio: switch to kernel's virtio_config.h
virtio_features: make it self-contained tools/virtio: fix up oot build
tools/virtio: add device, device_driver stubs

 include/linux/virtio.h             |   2 +
 include/linux/virtio_features.h    |   2 +
 tools/virtio/Makefile              |   8 ++-
 tools/virtio/linux/compiler.h      |   6 ++
 tools/virtio/linux/cpumask.h       |   4 ++
 tools/virtio/linux/device.h        |   8 +++
 tools/virtio/linux/dma-mapping.h   |   4 ++
 tools/virtio/linux/kernel.h        |  16 +++++
 tools/virtio/linux/module.h        |   2 +
 tools/virtio/linux/ucopysize.h     |  21 ++++++
 tools/virtio/linux/virtio.h        |  73 +--------------------
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 tools/virtio/oot-stubs.h           |  10 +++
 13 files changed, 82 insertions(+), 176 deletions(-)
 create mode 100644 tools/virtio/linux/ucopysize.h
 create mode 100644 tools/virtio/oot-stubs.h
Signature · 1 line
MST
author maintainer
#1 lore raw

PATCH 1/14 tools/virtio: fix up compiler.h stub

Add #undef __user before and after including compiler_types.h to avoid redefinition warnings when compiling with system headers that also define __user. This allows tools/virtio to build without warnings.

Additionally, stub out __must_check

Created using Cursor CLI.

---
 tools/virtio/linux/compiler.h | 6 ++++++
 1 file changed, 6 insertions(+)
tools/virtio/linux/compiler.h +6 -0
index 204ef0e9f542..7f9e308f3880 100644
@@ -2,7 +2,11 @@
 #ifndef LINUX_COMPILER_H
 #define LINUX_COMPILER_H
 
+/* Avoid redefinition warnings */
+#undef __user
 #include "../../../include/linux/compiler_types.h"
+#undef __user
+#define __user
 
 #define WRITE_ONCE(var, val) \
 	(*((volatile typeof(val) *)(&(var))) = (val))
@@ -35,4 +39,6 @@
 	__v;								\
 })
 
+#define __must_check
+
 #endif
Signature · 1 line
MST
author maintainer
#2 lore raw

PATCH 2/14 virtio: make it self-contained

In reply to Michael S. Tsirkin

virtio.h uses struct module, add a forward declaration to make the header self-contained.

---
 include/linux/virtio.h | 2 ++
 1 file changed, 2 insertions(+)
include/linux/virtio.h +2 -0
index 132a474e5914..3626eb694728 100644
@@ -13,6 +13,8 @@
 #include <linux/completion.h>
 #include <linux/virtio_features.h>
 
+struct module;
+
 /**
  * struct virtqueue - a queue to register buffers for sending or receiving.
  * @list: the chain of virtqueues for this device
Signature · 1 line
MST
author maintainer
#3 lore raw

PATCH 3/14 tools/virtio: use kernel's virtio.h

In reply to Michael S. Tsirkin

Replace virtio stubs with an include of the kernel header.

---
 tools/virtio/linux/virtio.h | 73 +------------------------------------
 1 file changed, 1 insertion(+), 72 deletions(-)
tools/virtio/linux/virtio.h +1 -72
index 5d3440f474dd..d3029c944589 100644
@@ -1,72 +1 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef LINUX_VIRTIO_H
-#define LINUX_VIRTIO_H
-#include <linux/scatterlist.h>
-#include <linux/kernel.h>
-#include <linux/spinlock.h>
-
-struct device {
-	void *parent;
-};
-
-struct virtio_device {
-	struct device dev;
-	u64 features;
-	struct list_head vqs;
-	spinlock_t vqs_list_lock;
-	const struct virtio_config_ops *config;
-};
-
-struct virtqueue {
-	struct list_head list;
-	void (*callback)(struct virtqueue *vq);
-	const char *name;
-	struct virtio_device *vdev;
-        unsigned int index;
-        unsigned int num_free;
-	unsigned int num_max;
-	void *priv;
-	bool reset;
-};
-
-/* Interfaces exported by virtio_ring. */
-int virtqueue_add_sgs(struct virtqueue *vq,
-		      struct scatterlist *sgs[],
-		      unsigned int out_sgs,
-		      unsigned int in_sgs,
-		      void *data,
-		      gfp_t gfp);
-
-int virtqueue_add_outbuf(struct virtqueue *vq,
-			 struct scatterlist sg[], unsigned int num,
-			 void *data,
-			 gfp_t gfp);
-
-int virtqueue_add_inbuf(struct virtqueue *vq,
-			struct scatterlist sg[], unsigned int num,
-			void *data,
-			gfp_t gfp);
-
-bool virtqueue_kick(struct virtqueue *vq);
-
-void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
-
-void virtqueue_disable_cb(struct virtqueue *vq);
-
-bool virtqueue_enable_cb(struct virtqueue *vq);
-bool virtqueue_enable_cb_delayed(struct virtqueue *vq);
-
-void *virtqueue_detach_unused_buf(struct virtqueue *vq);
-struct virtqueue *vring_new_virtqueue(unsigned int index,
-				      unsigned int num,
-				      unsigned int vring_align,
-				      struct virtio_device *vdev,
-				      bool weak_barriers,
-				      bool ctx,
-				      void *pages,
-				      bool (*notify)(struct virtqueue *vq),
-				      void (*callback)(struct virtqueue *vq),
-				      const char *name);
-void vring_del_virtqueue(struct virtqueue *vq);
-
-#endif
+#include <../../include/linux/virtio.h>
Signature · 1 line
MST
author maintainer
#4 lore raw

PATCH 4/14 tools/virtio: add struct module forward declaration

In reply to Michael S. Tsirkin

Declarate struct module in our linux/module.h stub.

Created using Cursor CLI.

---
 tools/virtio/linux/module.h | 2 ++
 1 file changed, 2 insertions(+)
tools/virtio/linux/module.h +2 -0
index b91681fc1571..b842ae9d870c 100644
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 #include <linux/export.h>
 
+struct module;
+
 #define MODULE_LICENSE(__MODULE_LICENSE_value) \
 	static __attribute__((unused)) const char *__MODULE_LICENSE_name = \
 		__MODULE_LICENSE_value
Signature · 1 line
MST
author maintainer
#5 lore raw

PATCH 5/14 tools/virtio: stub DMA mapping functions

In reply to Michael S. Tsirkin

Add dma_map_page_attrs and dma_unmap_page_attrs stubs. Follow the same pattern as existing DMA mapping stubs.

Created using Cursor CLI.

---
 tools/virtio/linux/dma-mapping.h | 4 ++++
 1 file changed, 4 insertions(+)
tools/virtio/linux/dma-mapping.h +4 -0
index 095958461788..fddfa2fbb276 100644
@@ -22,6 +22,7 @@ enum dma_data_direction {
 #define dma_free_coherent(d, s, p, h) kfree(p)
 
 #define dma_map_page(d, p, o, s, dir) (page_to_phys(p) + (o))
+#define dma_map_page_attrs(d, p, o, s, dir, a) (page_to_phys(p) + (o))
 
 #define dma_map_single(d, p, s, dir) (virt_to_phys(p))
 #define dma_map_single_attrs(d, p, s, dir, a) (virt_to_phys(p))
@@ -29,6 +30,9 @@ enum dma_data_direction {
 
 #define dma_unmap_single(d, a, s, r) do { (void)(d); (void)(a); (void)(s); (void)(r); } while (0)
 #define dma_unmap_page(d, a, s, r) do { (void)(d); (void)(a); (void)(s); (void)(r); } while (0)
+#define dma_unmap_page_attrs(d, a, s, r, t) do { \
+	(void)(d); (void)(a); (void)(s); (void)(r); (void)(t); \
+} while (0)
 
 #define sg_dma_address(sg) (0)
 #define sg_dma_len(sg) (0)
Signature · 1 line
MST
author maintainer
#6 lore raw

PATCH 6/14 tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs

In reply to Michael S. Tsirkin

Add dev_WARN_ONCE and is_vmalloc_addr stubs needed by virtio_ring.c. is_vmalloc_addr stub always returns false - that's fine since it's merely a sanity check.

Created using Cursor CLI.

---
 tools/virtio/linux/kernel.h | 9 +++++++++
 1 file changed, 9 insertions(+)
tools/virtio/linux/kernel.h +9 -0
index 6702008f7f5c..d7fc70b68a2b 100644
@@ -14,6 +14,7 @@
 #include <linux/log2.h>
 #include <linux/types.h>
 #include <linux/overflow.h>
+#include <linux/limits.h>
 #include <linux/list.h>
 #include <linux/printk.h>
 #include <linux/bug.h>
@@ -135,6 +136,14 @@ static inline void *krealloc_array(void *p, size_t new_n, size_t new_size, gfp_t
 #define dev_warn(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__)
 #define dev_warn_once(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__)
 
+#define dev_WARN_ONCE(dev, condition, format...) \
+	WARN_ONCE(condition, format)
+
+static inline bool is_vmalloc_addr(const void *x)
+{
+	return false;
+}
+
 #define min(x, y) ({				\
 	typeof(x) _min1 = (x);			\
 	typeof(y) _min2 = (y);			\
Signature · 1 line
MST
author maintainer
#7 lore raw

PATCH 7/14 tools/virtio: add ucopysize.h stub

In reply to Michael S. Tsirkin

Add ucopysize.h with stub implementations of check_object_size, copy_overflow, and check_copy_size.

Created using Cursor CLI.

---
 tools/virtio/linux/ucopysize.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 tools/virtio/linux/ucopysize.h
tools/virtio/linux/ucopysize.h new file +21 -0
new file mode 100644
index 000000000000..8beb7755d060
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __LINUX_UCOPYSIZE_H__
+#define __LINUX_UCOPYSIZE_H__
+
+#include <linux/bug.h>
+
+static inline void check_object_size(const void *ptr, unsigned long n,
+				     bool to_user)
+{ }
+
+static inline void copy_overflow(int size, unsigned long count)
+{
+}
+
+static __always_inline __must_check bool
+check_copy_size(const void *addr, size_t bytes, bool is_source)
+{
+	return true;
+}
+
+#endif /* __LINUX_UCOPYSIZE_H__ */
Signature · 1 line
MST
author maintainer
#8 lore raw

PATCH 8/14 tools/virtio: pass KCFLAGS to module build

In reply to Michael S. Tsirkin

Update the mod target to pass KCFLAGS with the in-tree vhost driver include path. This way vhost_test can find vhost headers.

Created using Cursor CLI.

---
 tools/virtio/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
tools/virtio/Makefile +2 -1
index e25e99c1c3b7..a60316211df6 100644
@@ -20,8 +20,9 @@ CFLAGS += -g -O2 -Werror -Wno-maybe-uninitialized -Wall -I. -I../include/ -I ../
 CFLAGS += -pthread
 LDFLAGS += -pthread
 vpath %.c ../../drivers/virtio ../../drivers/vhost
+BUILD=KCFLAGS="-I "`pwd`/../../drivers/vhost ${MAKE} -C `pwd`/../.. V=${V}
 mod:
-	${MAKE} -C `pwd`/../.. M=`pwd`/vhost_test V=${V}
+	${BUILD} M=`pwd`/vhost_test
 
 #oot: build vhost as an out of tree module for a distro kernel
 #no effort is taken to make it actually build or work, but tends to mostly work
Signature · 1 line
MST
author maintainer
#9 lore raw

PATCH 9/14 tools/virtio: add struct cpumask to cpumask.h

In reply to Michael S. Tsirkin

Add struct cpumask stub used by virtio_config.h.

Created using Cursor CLI.

---
 tools/virtio/linux/cpumask.h | 4 ++++
 1 file changed, 4 insertions(+)
tools/virtio/linux/cpumask.h +4 -0
index 307da69d6b26..38ffc00e149d 100644
@@ -4,4 +4,8 @@
 
 #include <linux/kernel.h>
 
+struct cpumask {
+	unsigned long bits[1];
+};
+
 #endif /* _LINUX_CPUMASK_H */
Signature · 1 line
MST
author maintainer
#10 lore raw

PATCH 10/14 tools/virtio: stub might_sleep and synchronize_rcu

In reply to Michael S. Tsirkin

Add might_sleep() and synchronize_rcu() stubs needed by virtio_config.h.

might_sleep() is a no-op, synchronize_rcu doesn't work but we don't need it to.

Created using Cursor CLI.

---
 tools/virtio/linux/kernel.h | 7 +++++++
 1 file changed, 7 insertions(+)
tools/virtio/linux/kernel.h +7 -0
index d7fc70b68a2b..416d02703f61 100644
@@ -144,6 +144,13 @@ static inline bool is_vmalloc_addr(const void *x)
 	return false;
 }
 
+#define might_sleep() do { } while (0)
+
+static inline void synchronize_rcu(void)
+{
+	assert(0);
+}
+
 #define min(x, y) ({				\
 	typeof(x) _min1 = (x);			\
 	typeof(y) _min2 = (y);			\
Signature · 1 line
MST
author maintainer
#11 lore raw

PATCH 11/14 tools/virtio: switch to kernel's virtio_config.h

In reply to Michael S. Tsirkin

Drops stubs in virtio_config.h, use the kernel's version instead - we are now activly developing it, so the stub became too hard to maintain.

---
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 1 file changed, 1 insertion(+), 101 deletions(-)
tools/virtio/linux/virtio_config.h +1 -101
index 42a564f22f2d..a0cd3f9a3111 100644
@@ -1,101 +1 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef LINUX_VIRTIO_CONFIG_H
-#define LINUX_VIRTIO_CONFIG_H
-#include <linux/virtio_byteorder.h>
-#include <linux/virtio.h>
-#include <uapi/linux/virtio_config.h>
-
-struct virtio_config_ops {
-	int (*disable_vq_and_reset)(struct virtqueue *vq);
-	int (*enable_vq_after_reset)(struct virtqueue *vq);
-};
-
-/*
- * __virtio_test_bit - helper to test feature bits. For use by transports.
- *                     Devices should normally use virtio_has_feature,
- *                     which includes more checks.
- * @vdev: the device
- * @fbit: the feature bit
- */
-static inline bool __virtio_test_bit(const struct virtio_device *vdev,
-				     unsigned int fbit)
-{
-	return vdev->features & (1ULL << fbit);
-}
-
-/**
- * __virtio_set_bit - helper to set feature bits. For use by transports.
- * @vdev: the device
- * @fbit: the feature bit
- */
-static inline void __virtio_set_bit(struct virtio_device *vdev,
-				    unsigned int fbit)
-{
-	vdev->features |= (1ULL << fbit);
-}
-
-/**
- * __virtio_clear_bit - helper to clear feature bits. For use by transports.
- * @vdev: the device
- * @fbit: the feature bit
- */
-static inline void __virtio_clear_bit(struct virtio_device *vdev,
-				      unsigned int fbit)
-{
-	vdev->features &= ~(1ULL << fbit);
-}
-
-#define virtio_has_feature(dev, feature) \
-	(__virtio_test_bit((dev), feature))
-
-/**
- * virtio_has_dma_quirk - determine whether this device has the DMA quirk
- * @vdev: the device
- */
-static inline bool virtio_has_dma_quirk(const struct virtio_device *vdev)
-{
-	/*
-	 * Note the reverse polarity of the quirk feature (compared to most
-	 * other features), this is for compatibility with legacy systems.
-	 */
-	return !virtio_has_feature(vdev, VIRTIO_F_ACCESS_PLATFORM);
-}
-
-static inline bool virtio_is_little_endian(struct virtio_device *vdev)
-{
-	return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) ||
-		virtio_legacy_is_little_endian();
-}
-
-/* Memory accessors */
-static inline u16 virtio16_to_cpu(struct virtio_device *vdev, __virtio16 val)
-{
-	return __virtio16_to_cpu(virtio_is_little_endian(vdev), val);
-}
-
-static inline __virtio16 cpu_to_virtio16(struct virtio_device *vdev, u16 val)
-{
-	return __cpu_to_virtio16(virtio_is_little_endian(vdev), val);
-}
-
-static inline u32 virtio32_to_cpu(struct virtio_device *vdev, __virtio32 val)
-{
-	return __virtio32_to_cpu(virtio_is_little_endian(vdev), val);
-}
-
-static inline __virtio32 cpu_to_virtio32(struct virtio_device *vdev, u32 val)
-{
-	return __cpu_to_virtio32(virtio_is_little_endian(vdev), val);
-}
-
-static inline u64 virtio64_to_cpu(struct virtio_device *vdev, __virtio64 val)
-{
-	return __virtio64_to_cpu(virtio_is_little_endian(vdev), val);
-}
-
-static inline __virtio64 cpu_to_virtio64(struct virtio_device *vdev, u64 val)
-{
-	return __cpu_to_virtio64(virtio_is_little_endian(vdev), val);
-}
-
-#endif
+#include "../../include/linux/virtio_config.h"
Signature · 1 line
MST
author maintainer
#12 lore raw

PATCH 12/14 virtio_features: make it self-contained

In reply to Michael S. Tsirkin

virtio_features.h uses WARN_ON_ONCE and memset so it must include linux/bug.h and linux/string.h

---
 include/linux/virtio_features.h | 2 ++
 1 file changed, 2 insertions(+)
include/linux/virtio_features.h +2 -0
index ea2ad8717882..ce59ea91f474 100644
@@ -3,6 +3,8 @@
 #define _LINUX_VIRTIO_FEATURES_H
 
 #include <linux/bits.h>
+#include <linux/bug.h>
+#include <linux/string.h>
 
 #define VIRTIO_FEATURES_U64S	2
 #define VIRTIO_FEATURES_BITS	(VIRTIO_FEATURES_U64S * 64)
Signature · 1 line
MST
author maintainer
#13 lore raw

PATCH 13/14 tools/virtio: fix up oot build

In reply to Michael S. Tsirkin

oot build tends to help uncover bugs so it's worth keeping around, as long as it's low effort.
add stubs for a couple of macros virtio gained recently, and disable vdpa in the test build.

---
 tools/virtio/Makefile    |  5 +++--
 tools/virtio/oot-stubs.h | 10 ++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)
 create mode 100644 tools/virtio/oot-stubs.h
tools/virtio/Makefile +3 -2
index a60316211df6..2cac5fd4b979 100644
@@ -38,8 +38,9 @@ OOT_CONFIGS=\
 	CONFIG_VHOST_NET=n \
 	CONFIG_VHOST_SCSI=n \
 	CONFIG_VHOST_VSOCK=n \
-	CONFIG_VHOST_RING=n
-OOT_BUILD=KCFLAGS="-I "${OOT_VHOST} ${MAKE} -C ${OOT_KSRC} V=${V}
+	CONFIG_VHOST_RING=n \
+	CONFIG_VHOST_VDPA=n
+OOT_BUILD=KCFLAGS="-include "`pwd`"/oot-stubs.h -I "${OOT_VHOST} ${MAKE} -C ${OOT_KSRC} V=${V}
 oot-build:
 	echo "UNSUPPORTED! Don't use the resulting modules in production!"
 	${OOT_BUILD} M=`pwd`/vhost_test
tools/virtio/oot-stubs.h new file +10 -0
new file mode 100644
index 000000000000..69e059cd14d6
@@ -0,0 +1,10 @@
+#include <linux/bug.h>
+#include <linux/string.h>
+#include <linux/virtio_features.h>
+
+#ifndef VIRTIO_FEATURES_BITS
+#define VIRTIO_FEATURES_BITS 128
+#endif
+#ifndef VIRTIO_U64
+#define VIRTIO_U64(b)           ((b) >> 6)
+#endif
Signature · 1 line
MST
author maintainer
#14 lore raw

PATCH 14/14 tools/virtio: add device, device_driver stubs

In reply to Michael S. Tsirkin

Add stubs needed by virtio.h

---
 tools/virtio/linux/device.h | 8 ++++++++
 1 file changed, 8 insertions(+)
tools/virtio/linux/device.h +8 -0
index 4ad7e1df0db5..075c2140d975 100644
@@ -1,2 +1,10 @@
 #ifndef LINUX_DEVICE_H
+
+struct device {
+	void *parent;
+};
+
+struct device_driver {
+	const char *name;
+};
 #endif
Signature · 1 line
MST
author maintainer
#15 lore raw
In reply to Michael S. Tsirkin
Quoted 10 lines · Michael S. Tsirkin

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Jason, any feedback?

Quoted 36 lines

Michael S. Tsirkin (14):
tools/virtio: fix up compiler.h stub
virtio: make it self-contained
tools/virtio: use kernel's virtio.h tools/virtio: add struct module forward declaration tools/virtio: stub DMA mapping functions tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs tools/virtio: add ucopysize.h stub
tools/virtio: pass KCFLAGS to module build tools/virtio: add struct cpumask to cpumask.h tools/virtio: stub might_sleep and synchronize_rcu tools/virtio: switch to kernel's virtio_config.h
virtio_features: make it self-contained tools/virtio: fix up oot build
tools/virtio: add device, device_driver stubs

 include/linux/virtio.h             |   2 +
 include/linux/virtio_features.h    |   2 +
 tools/virtio/Makefile              |   8 ++-
 tools/virtio/linux/compiler.h      |   6 ++
 tools/virtio/linux/cpumask.h       |   4 ++
 tools/virtio/linux/device.h        |   8 +++
 tools/virtio/linux/dma-mapping.h   |   4 ++
 tools/virtio/linux/kernel.h        |  16 +++++
 tools/virtio/linux/module.h        |   2 +
 tools/virtio/linux/ucopysize.h     |  21 ++++++
 tools/virtio/linux/virtio.h        |  73 +--------------------
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 tools/virtio/oot-stubs.h           |  10 +++
 13 files changed, 82 insertions(+), 176 deletions(-)
 create mode 100644 tools/virtio/linux/ucopysize.h
 create mode 100644 tools/virtio/oot-stubs.h
Signature · 1 line
MST
#16 lore raw
Quoted 10 lines · Michael S. Tsirkin
Quoted 8 lines · Michael S. Tsirkin

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Quoted 5 lines
Quoted 2 lines

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Jason, any feedback?

Looks good to me. But I wonder, it looks like synchronization will become more and more a burden in the future, I wonder if it's time to switch to using uAPI instead of trying to reuse kernel virtio core to test vhost?

Thanks

Quoted 38 lines
Quoted 37 lines

Michael S. Tsirkin (14):
tools/virtio: fix up compiler.h stub
virtio: make it self-contained
tools/virtio: use kernel's virtio.h tools/virtio: add struct module forward declaration tools/virtio: stub DMA mapping functions tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs tools/virtio: add ucopysize.h stub
tools/virtio: pass KCFLAGS to module build tools/virtio: add struct cpumask to cpumask.h tools/virtio: stub might_sleep and synchronize_rcu tools/virtio: switch to kernel's virtio_config.h
virtio_features: make it self-contained tools/virtio: fix up oot build
tools/virtio: add device, device_driver stubs

 include/linux/virtio.h             |   2 +
 include/linux/virtio_features.h    |   2 +
 tools/virtio/Makefile              |   8 ++-
 tools/virtio/linux/compiler.h      |   6 ++
 tools/virtio/linux/cpumask.h       |   4 ++
 tools/virtio/linux/device.h        |   8 +++
 tools/virtio/linux/dma-mapping.h   |   4 ++
 tools/virtio/linux/kernel.h        |  16 +++++
 tools/virtio/linux/module.h        |   2 +
 tools/virtio/linux/ucopysize.h     |  21 ++++++
 tools/virtio/linux/virtio.h        |  73 +--------------------
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 tools/virtio/oot-stubs.h           |  10 +++
 13 files changed, 82 insertions(+), 176 deletions(-)
 create mode 100644 tools/virtio/linux/ucopysize.h
 create mode 100644 tools/virtio/oot-stubs.h

--
MST

author maintainer
#17 lore raw
Quoted 15 lines · Jason Wang
Quoted 14 lines · Michael S. Tsirkin
Quoted 10 lines · Michael S. Tsirkin

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Quoted 8 lines
Quoted 1 line

Jason, any feedback?

Looks good to me. But I wonder, it looks like synchronization will become more and more a burden in the future, I wonder if it's time to switch to using uAPI instead of trying to reuse kernel virtio core to test vhost?

Thanks

Nothing prevents you from adding more tests, for sure.

UAPI - will likely not get us there. But if you have the energy to add selftests, maybe.

Quoted 38 lines
Quoted 38 lines
Quoted 37 lines

Michael S. Tsirkin (14):
tools/virtio: fix up compiler.h stub
virtio: make it self-contained
tools/virtio: use kernel's virtio.h tools/virtio: add struct module forward declaration tools/virtio: stub DMA mapping functions tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs tools/virtio: add ucopysize.h stub
tools/virtio: pass KCFLAGS to module build tools/virtio: add struct cpumask to cpumask.h tools/virtio: stub might_sleep and synchronize_rcu tools/virtio: switch to kernel's virtio_config.h
virtio_features: make it self-contained tools/virtio: fix up oot build
tools/virtio: add device, device_driver stubs

 include/linux/virtio.h             |   2 +
 include/linux/virtio_features.h    |   2 +
 tools/virtio/Makefile              |   8 ++-
 tools/virtio/linux/compiler.h      |   6 ++
 tools/virtio/linux/cpumask.h       |   4 ++
 tools/virtio/linux/device.h        |   8 +++
 tools/virtio/linux/dma-mapping.h   |   4 ++
 tools/virtio/linux/kernel.h        |  16 +++++
 tools/virtio/linux/module.h        |   2 +
 tools/virtio/linux/ucopysize.h     |  21 ++++++
 tools/virtio/linux/virtio.h        |  73 +--------------------
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 tools/virtio/oot-stubs.h           |  10 +++
 13 files changed, 82 insertions(+), 176 deletions(-)
 create mode 100644 tools/virtio/linux/ucopysize.h
 create mode 100644 tools/virtio/oot-stubs.h

--
MST

author maintainer
#18 lore raw
In reply to Jason Wang
Quoted 11 lines · Jason Wang
Quoted 10 lines · Michael S. Tsirkin
Quoted 8 lines · Michael S. Tsirkin

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Quoted 7 lines
Quoted 5 lines
Quoted 2 lines

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Jason, any feedback?

Looks good to me.

Can I get an Ack then?

Quoted 45 lines

But I wonder, it looks like synchronization will
become more and more a burden in the future, I wonder if it's time to switch to using uAPI instead of trying to reuse kernel virtio core to test vhost?

Thanks

Quoted 38 lines
Quoted 37 lines

Michael S. Tsirkin (14):
tools/virtio: fix up compiler.h stub
virtio: make it self-contained
tools/virtio: use kernel's virtio.h tools/virtio: add struct module forward declaration tools/virtio: stub DMA mapping functions tools/virtio: add dev_WARN_ONCE and is_vmalloc_addr stubs tools/virtio: add ucopysize.h stub
tools/virtio: pass KCFLAGS to module build tools/virtio: add struct cpumask to cpumask.h tools/virtio: stub might_sleep and synchronize_rcu tools/virtio: switch to kernel's virtio_config.h
virtio_features: make it self-contained tools/virtio: fix up oot build
tools/virtio: add device, device_driver stubs

 include/linux/virtio.h             |   2 +
 include/linux/virtio_features.h    |   2 +
 tools/virtio/Makefile              |   8 ++-
 tools/virtio/linux/compiler.h      |   6 ++
 tools/virtio/linux/cpumask.h       |   4 ++
 tools/virtio/linux/device.h        |   8 +++
 tools/virtio/linux/dma-mapping.h   |   4 ++
 tools/virtio/linux/kernel.h        |  16 +++++
 tools/virtio/linux/module.h        |   2 +
 tools/virtio/linux/ucopysize.h     |  21 ++++++
 tools/virtio/linux/virtio.h        |  73 +--------------------
 tools/virtio/linux/virtio_config.h | 102 +----------------------------
 tools/virtio/oot-stubs.h           |  10 +++
 13 files changed, 82 insertions(+), 176 deletions(-)
 create mode 100644 tools/virtio/linux/ucopysize.h
 create mode 100644 tools/virtio/oot-stubs.h

--
MST

Acked-by
#19 lore raw
Quoted 17 lines · Michael S. Tsirkin
Quoted 15 lines · Jason Wang
Quoted 14 lines · Michael S. Tsirkin
Quoted 10 lines · Michael S. Tsirkin

Recent virtio changes brought about build errors for tools/virtio, as usual. I did some refactoring to hopefully reduce maintainance load going forward.

Adding stubs is tedious and seemed a perfect fit for cursor - so I used it for that, then rewrote some commits and accepted others. commit logs I've rewritten.

Found and fixed a couple of minor bugs while doing this - that part's all mine.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Jason, any feedback?

Looks good to me.

Can I get an Ack then?

Thanks