]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Aug 2025 21:17:48 +0000 (14:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 1 Aug 2025 21:17:48 +0000 (14:17 -0700)
Pull virtio updates from Michael Tsirkin:

 - vhost can now support legacy threading if enabled in Kconfig

 - vsock memory allocation strategies for large buffers have been
   improved, reducing pressure on kmalloc

 - vhost now supports the in-order feature. guest bits missed the merge
   window.

 - fixes, cleanups all over the place

* tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (30 commits)
  vsock/virtio: Allocate nonlinear SKBs for handling large transmit buffers
  vsock/virtio: Rename virtio_vsock_skb_rx_put()
  vhost/vsock: Allocate nonlinear SKBs for handling large receive buffers
  vsock/virtio: Move SKB allocation lower-bound check to callers
  vsock/virtio: Rename virtio_vsock_alloc_skb()
  vsock/virtio: Resize receive buffers so that each SKB fits in a 4K page
  vsock/virtio: Move length check to callers of virtio_vsock_skb_rx_put()
  vsock/virtio: Validate length in packet header before skb_put()
  vhost/vsock: Avoid allocating arbitrarily-sized SKBs
  vhost_net: basic in_order support
  vhost: basic in order support
  vhost: fail early when __vhost_add_used() fails
  vhost: Reintroduce kthread API and add mode selection
  vdpa: Fix IDR memory leak in VDUSE module exit
  vdpa/mlx5: Fix release of uninitialized resources on error path
  vhost-scsi: Fix check for inline_sg_cnt exceeding preallocated limit
  virtio: virtio_dma_buf: fix missing parameter documentation
  vhost: Fix typos
  vhost: vringh: Remove unused functions
  vhost: vringh: Remove unused iotlb functions
  ...

1  2 
drivers/vhost/net.c
drivers/vhost/vhost.c
drivers/vhost/vhost.h
drivers/virtio/virtio.c
drivers/virtio/virtio_vdpa.c
include/linux/virtio.h
include/uapi/linux/vhost.h

index bfb774c273ea3b8956db17debf0e85f18fa567b3,8ac994b3228a66ec0a68f990eea965823655a03f..6edac0c1ba9bbf22b84a25acc770fefa5e7e0029
@@@ -69,14 -69,13 +69,15 @@@ MODULE_PARM_DESC(experimental_zcopytx, 
  
  #define VHOST_DMA_IS_DONE(len) ((__force u32)(len) >= (__force u32)VHOST_DMA_DONE_LEN)
  
 -enum {
 -      VHOST_NET_FEATURES = VHOST_FEATURES |
 -                       (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) |
 -                       (1ULL << VIRTIO_NET_F_MRG_RXBUF) |
 -                       (1ULL << VIRTIO_F_ACCESS_PLATFORM) |
 -                       (1ULL << VIRTIO_F_RING_RESET) |
 -                       (1ULL << VIRTIO_F_IN_ORDER)
 +static const u64 vhost_net_features[VIRTIO_FEATURES_DWORDS] = {
 +      VHOST_FEATURES |
 +      (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) |
 +      (1ULL << VIRTIO_NET_F_MRG_RXBUF) |
 +      (1ULL << VIRTIO_F_ACCESS_PLATFORM) |
-       (1ULL << VIRTIO_F_RING_RESET),
++      (1ULL << VIRTIO_F_RING_RESET) |
++      (1ULL << VIRTIO_F_IN_ORDER),
 +      VIRTIO_BIT(VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO) |
 +      VIRTIO_BIT(VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO),
  };
  
  enum {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index d6ad01fbb8d2ac3ec71dc65934b55d4dcd58b948,e72f2655459e45db7a61958e245a1cb93f4e6527..283348b64af9ac592cc84744e29ab605e018773f
  #define VHOST_VDPA_GET_VRING_SIZE     _IOWR(VHOST_VIRTIO, 0x82,       \
                                              struct vhost_vring_state)
  
 +/* Extended features manipulation */
 +#define VHOST_GET_FEATURES_ARRAY _IOR(VHOST_VIRTIO, 0x83, \
 +                                     struct vhost_features_array)
 +#define VHOST_SET_FEATURES_ARRAY _IOW(VHOST_VIRTIO, 0x83, \
 +                                     struct vhost_features_array)
 +
+ /* fork_owner values for vhost */
+ #define VHOST_FORK_OWNER_KTHREAD 0
+ #define VHOST_FORK_OWNER_TASK 1
+ /**
+  * VHOST_SET_FORK_FROM_OWNER - Set the fork_owner flag for the vhost device,
+  * This ioctl must called before VHOST_SET_OWNER.
+  * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y
+  *
+  * @param fork_owner: An 8-bit value that determines the vhost thread mode
+  *
+  * When fork_owner is set to VHOST_FORK_OWNER_TASK(default value):
+  *   - Vhost will create vhost worker as tasks forked from the owner,
+  *     inheriting all of the owner's attributes.
+  *
+  * When fork_owner is set to VHOST_FORK_OWNER_KTHREAD:
+  *   - Vhost will create vhost workers as kernel threads.
+  */
+ #define VHOST_SET_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8)
+ /**
+  * VHOST_GET_FORK_OWNER - Get the current fork_owner flag for the vhost device.
+  * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y
+  *
+  * @return: An 8-bit value indicating the current thread mode.
+  */
+ #define VHOST_GET_FORK_FROM_OWNER _IOR(VHOST_VIRTIO, 0x84, __u8)
  #endif