[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 2/8] virtio: Add tracking of the common virtio guest features
From: |
Maxim Davydov |
Subject: |
[PATCH v1 2/8] virtio: Add tracking of the common virtio guest features |
Date: |
Wed, 1 Sep 2021 12:07:58 +0300 |
It implements common virtio features via macros that, by defining
the virtio guest feature bit and the virtio host feature bit, allow
you to checks acknowledged virtio features by the guest.
Signed-off-by: Maxim Davydov <maxim.davydov@virtuozzo.com>
---
hw/virtio/virtio.c | 2 +-
include/hw/virtio/virtio.h | 39 ++++++++++++++++++++++++++-------------
2 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 874377f..5f113c7 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -3717,7 +3717,7 @@ static void virtio_device_instance_finalize(Object *obj)
}
static Property virtio_properties[] = {
- DEFINE_VIRTIO_COMMON_FEATURES(VirtIODevice, host_features),
+ DEFINE_VIRTIO_COMMON_FEATURES(VirtIODevice, host_features, guest_features),
DEFINE_PROP_BOOL("use-started", VirtIODevice, use_started, true),
DEFINE_PROP_BOOL("use-disabled-flag", VirtIODevice, use_disabled_flag,
true),
DEFINE_PROP_BOOL("x-disable-legacy-check", VirtIODevice,
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 8bab9cf..50f334c 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -277,19 +277,32 @@ typedef struct virtio_input_conf virtio_input_conf;
typedef struct VirtIOSCSIConf VirtIOSCSIConf;
typedef struct VirtIORNGConf VirtIORNGConf;
-#define DEFINE_VIRTIO_COMMON_FEATURES(_state, _field) \
- DEFINE_PROP_BIT64("indirect_desc", _state, _field, \
- VIRTIO_RING_F_INDIRECT_DESC, true), \
- DEFINE_PROP_BIT64("event_idx", _state, _field, \
- VIRTIO_RING_F_EVENT_IDX, true), \
- DEFINE_PROP_BIT64("notify_on_empty", _state, _field, \
- VIRTIO_F_NOTIFY_ON_EMPTY, true), \
- DEFINE_PROP_BIT64("any_layout", _state, _field, \
- VIRTIO_F_ANY_LAYOUT, true), \
- DEFINE_PROP_BIT64("iommu_platform", _state, _field, \
- VIRTIO_F_IOMMU_PLATFORM, false), \
- DEFINE_PROP_BIT64("packed", _state, _field, \
- VIRTIO_F_RING_PACKED, false)
+#define DEFINE_VIRTIO_FEATURE_BIT(_name, _state, _host_field, _guest_field,
\
+ _bit, _defval)
\
+ DEFINE_PROP_BIT(_name, _state, _host_field, _bit, _defval),
\
+ DEFINE_PROP_READ_ONLY_BIT64("acknowledged_by_guest_" _name, _state,
\
+ _guest_field, _bit)
+
+#define DEFINE_VIRTIO_FEATURE_BIT64(_name, _state, _host_field, _guest_field,
\
+ _bit, _defval)
\
+ DEFINE_PROP_BIT64(_name, _state, _host_field, _bit, _defval),
\
+ DEFINE_PROP_READ_ONLY_BIT64("acknowledged_by_guest_" _name, _state,
\
+ _guest_field, _bit)
+
+#define DEFINE_VIRTIO_COMMON_FEATURES(_state, _host_field, _guest_field)
\
+ DEFINE_VIRTIO_FEATURE_BIT64("indirect_desc", _state, _host_field,
\
+ _guest_field, VIRTIO_RING_F_INDIRECT_DESC,
\
+ true),
\
+ DEFINE_VIRTIO_FEATURE_BIT64("event_idx", _state, _host_field,
\
+ _guest_field, VIRTIO_RING_F_EVENT_IDX, true),
\
+ DEFINE_VIRTIO_FEATURE_BIT64("notify_on_empty", _state, _host_field,
\
+ _guest_field, VIRTIO_F_NOTIFY_ON_EMPTY, true),
\
+ DEFINE_VIRTIO_FEATURE_BIT64("any_layout", _state, _host_field,
\
+ _guest_field, VIRTIO_F_ANY_LAYOUT, true),
\
+ DEFINE_VIRTIO_FEATURE_BIT64("iommu_platform", _state, _host_field,
\
+ _guest_field, VIRTIO_F_IOMMU_PLATFORM, false),
\
+ DEFINE_VIRTIO_FEATURE_BIT64("packed", _state, _host_field,
\
+ _guest_field, VIRTIO_F_RING_PACKED, false)
hwaddr virtio_queue_get_desc_addr(VirtIODevice *vdev, int n);
bool virtio_queue_enabled_legacy(VirtIODevice *vdev, int n);
--
1.8.3.1
- [PATCH v1 0/8] Virtio features acknowledged by guest, Maxim Davydov, 2021/09/01
- [PATCH v1 4/8] virtio-serial: Add tracking of the virtio guest feature bits, Maxim Davydov, 2021/09/01
- [PATCH v1 5/8] virtio-net: Add tracking of the virtio guest feature bits, Maxim Davydov, 2021/09/01
- [PATCH v1 8/8] virtio-balloon: Add tracking of the virtio guest feature bits, Maxim Davydov, 2021/09/01
- [PATCH v1 6/8] scsi: Add tracking of the acknowledged feature bits, Maxim Davydov, 2021/09/01
- [PATCH v1 7/8] virtio-blk: Add tracking of the virtio guest feature bits, Maxim Davydov, 2021/09/01
- [PATCH v1 1/8] qdev-properties: Add read-only 64 bit property, Maxim Davydov, 2021/09/01
- [PATCH v1 2/8] virtio: Add tracking of the common virtio guest features,
Maxim Davydov <=
- [PATCH v1 3/8] virtio-gpu: Add tracking of the virtio guest feature bits, Maxim Davydov, 2021/09/01
- Re: [PATCH v1 0/8] Virtio features acknowledged by guest, Stefan Hajnoczi, 2021/09/02