[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20251009093127-mutt-send-email-mst@kernel.org>
Date: Thu, 9 Oct 2025 09:37:20 -0400
From: "Michael S. Tsirkin" <mst@...hat.com>
To: Andrew Lunn <andrew@...n.ch>
Cc: linux-kernel@...r.kernel.org, netdev@...r.kernel.org,
Paolo Abeni <pabeni@...hat.com>, Jason Wang <jasowang@...hat.com>,
Eugenio Pérez <eperezma@...hat.com>,
Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
Jonathan Corbet <corbet@....net>, kvm@...r.kernel.org,
virtualization@...ts.linux.dev, linux-doc@...r.kernel.org
Subject: Re: [PATCH 1/3] virtio: dwords->qwords
On Thu, Oct 09, 2025 at 02:31:04PM +0200, Andrew Lunn wrote:
> On Thu, Oct 09, 2025 at 07:24:08AM -0400, Michael S. Tsirkin wrote:
> > A "word" is 16 bit. 64 bit integers like virtio uses are not dwords,
> > they are actually qwords.
>
> I'm having trouble with this....
>
> This bit makes sense. 4x 16bits = 64 bits.
>
> > -static const u64 vhost_net_features[VIRTIO_FEATURES_DWORDS] = {
> > +static const u64 vhost_net_features[VIRTIO_FEATURES_QWORDS] = {
>
> If this was u16, and VIRTIO_FEATURES_QWORDS was 4, which the Q would
> imply, than i would agree with what you are saying. But this is a u64
> type. It is already a QWORD, and this is an array of two of them.
I don't get what you are saying here.
It's an array of qwords and VIRTIO_FEATURES_QWORDS tells you
how many QWORDS are needed to fit all of them.
This is how C arrays are declared.
> I think the real issue here is not D vs Q, but WORD. We have a default
> meaning of a u16 for a word, especially in C. But that is not the
> actual definition of a word a computer scientist would use. Wikipedia
> has:
>
> In computing, a word is any processor design's natural unit of
> data. A word is a fixed-sized datum handled as a unit by the
> instruction set or the hardware of the processor.
>
> A word can be any size. In this context, virtio is not referring to
> the instruction set, but a protocol. Are all fields in this protocol
> u64? Hence word is u64? And this is an array of two words? That would
> make DWORD correct, it is two words.
>
> If you want to change anything here, i would actually change WORD to
> something else, maybe FIELD?
>
> And i could be wrong here, i've not looked at the actual protocol, so
> i've no idea if all fields in the protocol are u64. There are
> protocols like this, IPv6 uses u32, not octets, and the length field
> in the headers refer to the number of u32s in the header.
>
> Andrew
Virtio uses "dword" to mean "32 bits" in several places:
device-types/i2c/description.tex:The \field{padding} is used to pad to full dword.
pads to 32 bit
transport-pci.tex: u8 padding[2]; /* Pad to full dword. */
same
Under pci, the meaning is also generally as I use it here.
E.g.:
Documentation/PCI/pci.rst:You can use `pci_(read|write)_config_(byte|word|dword)` to access the config
--
MST
Powered by blists - more mailing lists