From c88e8a98167c82ce56ce184389b011637c204337 Mon Sep 17 00:00:00 2001 From: Mathijs Rietbergen Date: Sat, 27 Dec 2025 11:04:52 +0100 Subject: [PATCH] kernel: add kmods for vsockets over virtio Add menuconfig options to include modules for (virtio) vsockets. These are used when running as Guest OS in a VM. OpenWRT can be run in a vm (mostly commonly on the x86/64 and armsr targets). Often it is convenient to have some sort of guest agent running, to ease communication from host to guest. Virtual Sockets provide this communication channel. Virtio is a transport for this communication channel. Virtual Sockets over virtio are for example used by Incus. Virtual Sockets in general are used by most hypervisors, including VMware, Hyper-V, and libvirt (qemu). These may need other transport-specific modules not included in this commit. Signed-off-by: Mathijs Rietbergen --- package/kernel/linux/modules/virt.mk | 56 ++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/package/kernel/linux/modules/virt.mk b/package/kernel/linux/modules/virt.mk index 9286ad489c..661aa1403c 100644 --- a/package/kernel/linux/modules/virt.mk +++ b/package/kernel/linux/modules/virt.mk @@ -139,3 +139,59 @@ define KernelPackage/vhost-net endef $(eval $(call KernelPackage,vhost-net)) + + +define KernelPackage/vsock + SUBMENU:=Virtualization + TITLE:=Virtual Socket Protocol + KCONFIG:= \ + CONFIG_VSOCKETS \ + CONFIG_VSOCKETS_LOOPBACK=n \ + CONFIG_HYPERV_VSOCKETS=n + FILES:=$(LINUX_DIR)/net/vmw_vsock/vsock.ko + AUTOLOAD:=$(call AutoProbe,vsock) +endef + +define KernelPackage/vsock/description + Kernel support support for the Virtual Socket Protocol. + Often used when running in a VM to communicate with the hypervisor. + Additionally needs a hypervisor-specific transport driver. +endef + +$(eval $(call KernelPackage,vsock)) + + +define KernelPackage/vsock-virtio-common + SUBMENU:=Virtualization + TITLE:=Module used by other drivers to access Virtio Virtual Sockets + DEPENDS:=+kmod-vsock + KCONFIG:=CONFIG_VIRTIO_VSOCKETS_COMMON + FILES:=$(LINUX_DIR)/net/vmw_vsock/vmw_vsock_virtio_transport_common.ko + AUTOLOAD:=$(call AutoProbe,vmw_vsock_virtio_transport_common) + HIDDEN:=1 +endef + +$(eval $(call KernelPackage,vsock-virtio-common)) + + +define KernelPackage/vsock-virtio + SUBMENU:=Virtualization + TITLE:=Virtio transport driver for Virtual Sockets + DEPENDS:= @VIRTIO_SUPPORT +kmod-vsock +kmod-vsock-virtio-common + KCONFIG:=CONFIG_VIRTIO_VSOCKETS + FILES:=$(LINUX_DIR)/net/vmw_vsock/vmw_vsock_virtio_transport.ko + AUTOLOAD:=$(call AutoProbe,vmw_vsock_virtio_transport) +endef + +define KernelPackage/vsock-virtio/description + Kernel support for Virtual Sockets over virtio. + Enable this transport if you plan to run OpenWRT in a virtual machine and the + hypervisor supports Virtual Sockets over virtio (Incus for example). + + Usually needed by "guest agents" to function, as it provides a communication + channel between the guest os and the hypervisor. + + The module will be called vmw_vsock_virtio_transport. +endef + +$(eval $(call KernelPackage,vsock-virtio))