Re: [PATCH v3 01/17] virtio_pci: struct virtio_pci_common_cfg add queue_notify_data
From: Jason Wang <hidden>
Date: 2022-02-08 03:03:34
Also in:
bpf, virtualization
On Tue, Feb 8, 2022 at 10:17 AM Xuan Zhuo [off-list ref] wrote:
On Mon, 7 Feb 2022 16:06:15 +0800, Jason Wang [off-list ref] wrote:quoted
On Mon, Feb 7, 2022 at 2:07 PM Xuan Zhuo [off-list ref] wrote:quoted
On Mon, 7 Feb 2022 11:41:06 +0800, Jason Wang [off-list ref] wrote:quoted
在 2022/1/26 下午3:35, Xuan Zhuo 写道:quoted
Add queue_notify_data in struct virtio_pci_common_cfg, which comes from here https://github.com/oasis-tcs/virtio-spec/issues/89 Since I want to add queue_reset after it, I submitted this patch first. Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> --- include/uapi/linux/virtio_pci.h | 1 + 1 file changed, 1 insertion(+)diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h index 3a86f36d7e3d..492c89f56c6a 100644 --- a/include/uapi/linux/virtio_pci.h +++ b/include/uapi/linux/virtio_pci.h@@ -164,6 +164,7 @@ struct virtio_pci_common_cfg { __le32 queue_avail_hi; /* read-write */ __le32 queue_used_lo; /* read-write */ __le32 queue_used_hi; /* read-write */ + __le16 queue_notify_data; /* read-write */ };So I had the same concern as previous version. This breaks uABI where program may try to use sizeof(struct virtio_pci_common_cfg). We probably need a container structure here.I see, I plan to add a struct like this, do you think it's appropriate? struct virtio_pci_common_cfg_v1 { struct virtio_pci_common_cfg cfg; __le16 queue_notify_data; /* read-write */ }Something like this but we probably need a better name.how about this? /* Ext Fields in VIRTIO_PCI_CAP_COMMON_CFG: */ struct virtio_pci_common_cfg_ext { struct virtio_pci_common_cfg cfg; __le16 queue_notify_data; /* read-write */ __le16 reserved0; __le16 reserved1; __le16 reserved2; __le16 reserved3; __le16 reserved4; __le16 reserved5; __le16 reserved6; __le16 reserved7; __le16 reserved8; __le16 reserved9; __le16 reserved10; __le16 reserved11; __le16 reserved12; __le16 reserved13; __le16 reserved14; };
I still think the container without padding is better. Otherwise userspace needs to use offset_of() trick instead of sizeof(). Thanks
Thanksquoted
Thanksquoted
Thanks.quoted
THanksquoted
/* Fields in VIRTIO_PCI_CAP_PCI_CFG: */