From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6281231858 for ; Sun, 30 Nov 2025 23:03:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764543797; cv=none; b=q+ScDgX8IdoU1C3KBVPnr3fpsykvNbUuLZr9WQrqV5UmHjABGFJlr0bXP42KoBvg5EkMbj4dGcA53FJpZ2gAv0pXTrOchMnitIKMDFXvx6NzLqh2PU/0P/rJFNRS2Ljx/mp8DkO7qx17pKYdlxyyMm95lMBGb17E3n8pdL1CBqg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764543797; c=relaxed/simple; bh=ZfpCx8knGrouWGNC7nEwvm1zZ9qJ6jvvaYXgkkxNV1k=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Gefij0Fi1KgEa+CmfinsztvYFJDiQiiSAcQQ4uSiGuU3BUZahPjXZr9+qrqpATjx/mFZ0mx6+iG9oHnu3TL27QlQ5q5lKuD+6THRIXV5b+YR8U87Y0wF0Rv+l9kpsAW1l0cXXS3OshSv+r8BxwnX5QehjZ6IlAb1PLXnr93Go14= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=EsxvGBfN; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=FdkKobo1; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EsxvGBfN"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="FdkKobo1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1764543794; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2KYWqOzNj2d5/1Lpu3vgejds9oVTzhmmeGtHmPu0sy0=; b=EsxvGBfNEuc7kOaXQhmlW3OSWZq/hed7RpzV6OPvqvTTrEannroP8LsPZUpZUyemofIKTD kSGwURSU596PT98LxLizwx0dmsej2uv79THGqO0p8JYrfxXJ39q9PvACBm8J+qPTRs0bhy rXbN1SxkcMEnhIpDjYVOVBJhfQqz0I0= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-599-RwRRqOFwOnyCV98sfzzoFA-1; Sun, 30 Nov 2025 18:03:13 -0500 X-MC-Unique: RwRRqOFwOnyCV98sfzzoFA-1 X-Mimecast-MFC-AGG-ID: RwRRqOFwOnyCV98sfzzoFA_1764543792 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4779393221aso19163525e9.2 for ; Sun, 30 Nov 2025 15:03:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1764543792; x=1765148592; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=2KYWqOzNj2d5/1Lpu3vgejds9oVTzhmmeGtHmPu0sy0=; b=FdkKobo1/u87RtBETECfvc9t8LCybntJomznWyIeG+zc8MwiAve/6XvGCZ5bi0dz5p okDbDWPmQ9y1wzGEDf1m8IMeDdPIbNkdAVFO+D0IRiZAeWAlfwryeQ4tQ5gDJGWieNYF KHR00fm34AFq/A047PajDf8Oe8D46fSBMVDjvD5zCM6P0pfNooYNNLQF5lGvfhp21QfU XspUFu62Mx7UtjibcK5uJwW9C5Ikbng7Dl+EPmIKUq7ykoXY7AC2yX6K1+nbILweAbJx wK8KwJXmM665qTcPUV/rKQGRAmsUkysqnAOMJkVJvp6ipunk8flJiIpOlGO3IGOS/FtE aeRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764543792; x=1765148592; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2KYWqOzNj2d5/1Lpu3vgejds9oVTzhmmeGtHmPu0sy0=; b=lfqZFqqkXETSUpNFk4J9YywHN6uefTowRvtzS1lEHNDiCdZCbAKe1/gM/MWEYV+qaM iXlZ8qEvYe7nNoBBEZf+WzK/n6SOdMW/pTJ2mu4NzBhxAfNlvkBcE4vbnfocz7kfRIpB OsxLi7mWBwpc1c/XZ3/HZRrVn9UxI+g+mkcoXwZcmgQIc70pY4QZtX2CvUSJFqW878cb Qm6Ao8McJj1fwmG6wcyuZZGPYksmSObcWDVsjsbgOYtUCP14LLWg1owxGbALXczFTjSx dSea/Inm4ypAHI3gfUPYlpHl2sBfY4KS60lJ0lXEAYqL68Vzd7DAWDNi6Krg7T20panf dMPQ== X-Gm-Message-State: AOJu0YwzK8aMMRhz7p6DaVD1Elu79/sDqmJDsTtbk+7QjVVe/wYl9Hky kz5cw30dJzCedIh245Z3vup9udkZPvU88wSXU209JyOrFObcQ0Xi/vXd2+FP8Pzs9nTQs8bkBzo sp4f1qT0ZUpC6BTwpt2Fnevw8T1TMiId4NOxNs6AZNSuz0xalEbpuQdGtC7B2GGF6/A== X-Gm-Gg: ASbGnct1LBkX4KmvMRABC9CRXABRpOBucEGug7gEzAdS2h+zm+c7kk+iYcJ5QP/8Bfc OSTbWjMh9jqeq/V16NkxetfUgvc34q+N4gQcvvbo6hzEJOjfT1QOLx+MhEeVaXCzBiRd8uNctvG ufrjkrp4OWFx2jibnMrGqkHyzpsf9qhYIA5IWw0eugOjS8d6XRjBW3kdn4tNbKru+LS4SL3ni9A A/35LGnSWnXENp15joHbLtsEKO87B9pbonWH138dSLhKLlc2g/THTqEUju9rQj6vJexyAEGO/jP cErlOwWERSXxrH9COnS39/KLe2dK1Fcf4A/qQCAuzkdx8yHkOYqeMrQXz2+UcUYP+jDnhAkqmEa tmC3n X-Received: by 2002:a05:600c:6c48:b0:477:7f4a:44ba with SMTP id 5b1f17b1804b1-477c0162ec8mr240933455e9.4.1764543791989; Sun, 30 Nov 2025 15:03:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IEZ0j3yjeOE/7Gi6Iq/z5xIauDdgH0LX9c1o69qo0dSs0luPALUG491DfapI4ULa5/ALhqkAw== X-Received: by 2002:a05:600c:6c48:b0:477:7f4a:44ba with SMTP id 5b1f17b1804b1-477c0162ec8mr240933285e9.4.1764543791521; Sun, 30 Nov 2025 15:03:11 -0800 (PST) Received: from redhat.com ([2a06:c701:73f0:bd00:7951:f7c0:f4c7:a98f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42e1c5c30c4sm23158691f8f.9.2025.11.30.15.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Nov 2025 15:03:10 -0800 (PST) Date: Sun, 30 Nov 2025 18:03:06 -0500 From: "Michael S. Tsirkin" To: Jason Wang Cc: linux-kernel@vger.kernel.org, Andrew Lunn , Paolo Abeni , Eugenio =?iso-8859-1?Q?P=E9rez?= , Xuan Zhuo , Jonathan Corbet , kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Mike Christie , Paolo Bonzini , Stefan Hajnoczi , Stefano Garzarella Subject: Re: [PATCH v6 3/3] vhost: switch to arrays of feature bits Message-ID: <20251130180259-mutt-send-email-mst@kernel.org> References: <637e182e139980e5930d50b928ba5ac072d628a9.1764225384.git.mst@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Nov 28, 2025 at 10:39:57AM +0800, Jason Wang wrote: > On Thu, Nov 27, 2025 at 2:40 PM Michael S. Tsirkin wrote: > > > > The current interface where caller has to know in which 64 bit chunk > > each bit is, is inelegant and fragile. > > Let's simply use arrays of bits. > > By using unroll macros text size grows only slightly. > > > > Signed-off-by: Michael S. Tsirkin > > --- > > drivers/vhost/net.c | 19 ++++++++++--------- > > drivers/vhost/scsi.c | 9 ++++++--- > > drivers/vhost/test.c | 6 +++++- > > drivers/vhost/vhost.h | 42 ++++++++++++++++++++++++++++++++++-------- > > drivers/vhost/vsock.c | 10 ++++++---- > > 5 files changed, 61 insertions(+), 25 deletions(-) > > > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > > index d057ea55f5ad..f8ed39337f56 100644 > > --- a/drivers/vhost/net.c > > +++ b/drivers/vhost/net.c > > @@ -69,15 +69,15 @@ MODULE_PARM_DESC(experimental_zcopytx, "Enable Zero Copy TX;" > > > > #define VHOST_DMA_IS_DONE(len) ((__force u32)(len) >= (__force u32)VHOST_DMA_DONE_LEN) > > > > -static const u64 vhost_net_features[VIRTIO_FEATURES_U64S] = { > > - 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), > > - VIRTIO_BIT(VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO) | > > - VIRTIO_BIT(VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO), > > +static const int vhost_net_bits[] = { > > + VHOST_FEATURES, > > + VHOST_NET_F_VIRTIO_NET_HDR, > > + VIRTIO_NET_F_MRG_RXBUF, > > + VIRTIO_F_ACCESS_PLATFORM, > > + VIRTIO_F_RING_RESET, > > + VIRTIO_F_IN_ORDER, > > + VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO, > > + VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO > > }; > > > > enum { > > @@ -1720,6 +1720,7 @@ static long vhost_net_set_owner(struct vhost_net *n) > > static long vhost_net_ioctl(struct file *f, unsigned int ioctl, > > unsigned long arg) > > { > > + const DEFINE_VHOST_FEATURES_ARRAY(vhost_net_features, vhost_net_bits); > > u64 all_features[VIRTIO_FEATURES_U64S]; > > struct vhost_net *n = f->private_data; > > void __user *argp = (void __user *)arg; > > diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c > > index 98e4f68f4e3c..f43c1fe9fad9 100644 > > --- a/drivers/vhost/scsi.c > > +++ b/drivers/vhost/scsi.c > > @@ -197,11 +197,14 @@ enum { > > }; > > > > /* Note: can't set VIRTIO_F_VERSION_1 yet, since that implies ANY_LAYOUT. */ > > -enum { > > - VHOST_SCSI_FEATURES = VHOST_FEATURES | (1ULL << VIRTIO_SCSI_F_HOTPLUG) | > > - (1ULL << VIRTIO_SCSI_F_T10_PI) > > +static const int vhost_scsi_bits[] = { > > + VHOST_FEATURES, > > + VIRTIO_SCSI_F_HOTPLUG, > > + VIRTIO_SCSI_F_T10_PI > > }; > > > > +#define VHOST_SCSI_FEATURES VHOST_FEATURES_U64(vhost_scsi_bits, 0) > > + > > #define VHOST_SCSI_MAX_TARGET 256 > > #define VHOST_SCSI_MAX_IO_VQ 1024 > > #define VHOST_SCSI_MAX_EVENT 128 > > diff --git a/drivers/vhost/test.c b/drivers/vhost/test.c > > index 94cd09f36f59..f592b2f548e8 100644 > > --- a/drivers/vhost/test.c > > +++ b/drivers/vhost/test.c > > @@ -28,7 +28,11 @@ > > */ > > #define VHOST_TEST_PKT_WEIGHT 256 > > > > -#define VHOST_TEST_FEATURES VHOST_FEATURES > > +static const int vhost_test_bits[] = { > > + VHOST_FEATURES > > +}; > > + > > +#define VHOST_TEST_FEATURES VHOST_FEATURES_U64(vhost_test_features, 0) > > Did you mean vhost_test_bits actually? > > Thanks indeed.