The branch main has been updated by ngie: URL: https://cgit.FreeBSD.org/src/commit/?id=f9a4dd60b0cf4ce920a83b125f81ee401fc471ce
commit f9a4dd60b0cf4ce920a83b125f81ee401fc471ce Author: Faraz Vahedi <[email protected]> AuthorDate: 2026-07-09 20:00:07 +0000 Commit: Enji Cooper <[email protected]> CommitDate: 2026-07-15 06:57:40 +0000 virtio: Add feature bit definitions up to VirtIO v1.3 Signed-off-by: Faraz Vahedi <[email protected]> Reviewed-by: ngie Pull-Request: https://github.com/freebsd/freebsd-src/pull/2319 --- sys/dev/virtio/virtio.c | 8 ++++++++ sys/dev/virtio/virtio_config.h | 28 ++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/sys/dev/virtio/virtio.c b/sys/dev/virtio/virtio.c index be5edcafa7ff..a032bfc20499 100644 --- a/sys/dev/virtio/virtio.c +++ b/sys/dev/virtio/virtio.c @@ -87,6 +87,14 @@ static struct virtio_feature_desc virtio_common_feature_desc[] = { { VIRTIO_F_BAD_FEATURE, "BadFeature" }, /* Legacy */ { VIRTIO_F_VERSION_1, "Version1" }, { VIRTIO_F_IOMMU_PLATFORM, "IOMMUPlatform" }, + { VIRTIO_F_RING_PACKED, "RingPacked" }, + { VIRTIO_F_IN_ORDER, "InOrder" }, + { VIRTIO_F_ORDER_PLATFORM, "OrderPlatform" }, + { VIRTIO_F_SR_IOV, "SRIOV" }, + { VIRTIO_F_NOTIFICATION_DATA, "NotificationData" }, + { VIRTIO_F_NOTIF_CONFIG_DATA, "NotifConfigData" }, + { VIRTIO_F_RING_RESET, "RingReset" }, + { VIRTIO_F_ADMIN_VQ, "AdminVq" }, { 0, NULL } }; diff --git a/sys/dev/virtio/virtio_config.h b/sys/dev/virtio/virtio_config.h index 02765490ed27..ce6e96a223d4 100644 --- a/sys/dev/virtio/virtio_config.h +++ b/sys/dev/virtio/virtio_config.h @@ -63,10 +63,10 @@ * The guest should never negotiate this feature; it * is used to detect faulty drivers. */ -#define VIRTIO_F_BAD_FEATURE (1UL << 30) +#define VIRTIO_F_BAD_FEATURE (1UL << 30) /* v1.0 compliant. */ -#define VIRTIO_F_VERSION_1 (1ULL << 32) +#define VIRTIO_F_VERSION_1 (1ULL << 32) /* * If clear - device has the IOMMU bypass quirk feature. @@ -77,6 +77,30 @@ */ #define VIRTIO_F_IOMMU_PLATFORM (1ULL << 33) +/* Support for packed virtqueues. */ +#define VIRTIO_F_RING_PACKED (1ULL << 34) + +/* Device may behave as if IN_ORDER was negotiated. */ +#define VIRTIO_F_IN_ORDER (1ULL << 35) + +/* Memory accesses are ordered by the platform. */ +#define VIRTIO_F_ORDER_PLATFORM (1ULL << 36) + +/* Device supports Single Root I/O Virtualization. */ +#define VIRTIO_F_SR_IOV (1ULL << 37) + +/* Driver passes extra data in device notifications. */ +#define VIRTIO_F_NOTIFICATION_DATA (1ULL << 38) + +/* Driver uses the data provided by the device as a virtqueue identifier. */ +#define VIRTIO_F_NOTIF_CONFIG_DATA (1ULL << 39) + +/* Driver can reset a queue individually. */ +#define VIRTIO_F_RING_RESET (1ULL << 40) + +/* Device supports an administration virtqueue. */ +#define VIRTIO_F_ADMIN_VQ (1ULL << 41) + /* * Some VirtIO feature bits (currently bits 28 through 34) are * reserved for the transport being used (eg. virtio_ring), the
