Re: [PATCH 3/3] vhost: use checked versions of VIRTIO_BIT
From: Andrew Lunn <andrew@lunn.ch>
Date: 2025-10-09 12:47:59
Also in:
kvm, lkml, virtualization
On Thu, Oct 09, 2025 at 07:24:16AM -0400, Michael S. Tsirkin wrote:
quoted hunk ↗ jump to hunk
This adds compile-time checked versions of VIRTIO_BIT that set bits in low and high qword, respectively. Will prevent confusion when people set bits in the wrong qword. Cc: "Paolo Abeni" <pabeni@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- drivers/vhost/net.c | 4 ++-- include/linux/virtio_features.h | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-)diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 43d51fb1f8ea..8b98e1a8baaa 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c@@ -76,8 +76,8 @@ static const u64 vhost_net_features[VIRTIO_FEATURES_QWORDS] = { (1ULL << VIRTIO_F_ACCESS_PLATFORM) | (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), + VIRTIO_BIT_HI(VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO) | + VIRTIO_BIT_HI(VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO),
How any bits in vhost_net_features are currently in use? How likely is it to go from 2x 64bit words to 3x 64 bit words? Rather than _LO, _HI, would _1ST, _2ND be better leaving it open for _3RD? I would also be tempted to rename these macros to include _LO_ and _HI_ in them. VIRTIO_BIT_HI(VIRTIO_LO_F_IN_ORDER) is more likely to be spotted as wrong this way. An alternative would be to convert to a linux bitmap, which is arbitrary length so you just use bit number and leave the implementation to map that to the correct offset in the underlying data structure. Andrew