Hi Eric,
On 23/2/24 08:27, Eric Auger wrote:
Introduce a new enum type property allowing to set an
IOMMU granule. Values are 4K, 8K, 16K, 64K and host.
This latter indicates the vIOMMU granule will match
the host page size.
A subsequent patch will add such a property to the
virtio-iommu device.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
v3 -> v4:
- Add 8K
---
include/hw/qdev-properties-system.h | 3 +++
include/hw/virtio/virtio-iommu.h | 11 +++++++++++
hw/core/qdev-properties-system.c | 15 +++++++++++++++
hw/virtio/virtio-iommu.c | 11 +++++++++++
4 files changed, 40 insertions(+)
diff --git a/include/hw/virtio/virtio-iommu.h
b/include/hw/virtio/virtio-iommu.h
index 5fbe4677c2..e22327548f 100644
--- a/include/hw/virtio/virtio-iommu.h
+++ b/include/hw/virtio/virtio-iommu.h
@@ -31,6 +31,17 @@ OBJECT_DECLARE_SIMPLE_TYPE(VirtIOIOMMU, VIRTIO_IOMMU)
#define TYPE_VIRTIO_IOMMU_MEMORY_REGION "virtio-iommu-memory-region"
+typedef enum GranuleMode {
+ GRANULE_MODE_4K,
+ GRANULE_MODE_8K,
+ GRANULE_MODE_16K,
+ GRANULE_MODE_64K,
+ GRANULE_MODE_HOST,
+ GRANULE_MODE__MAX,
+} GranuleMode;
+
+extern const QEnumLookup GranuleMode_lookup;
Aren't this, ...
diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
index 2ec5ef3cd1..a9bdc03d12 100644
--- a/hw/virtio/virtio-iommu.c
+++ b/hw/virtio/virtio-iommu.c
@@ -44,6 +44,17 @@
#define VIOMMU_DEFAULT_QUEUE_SIZE 256
#define VIOMMU_PROBE_SIZE 512
+const QEnumLookup GranuleMode_lookup = {
+ .array = (const char *const[]) {
+ [GRANULE_MODE_4K] = "4K",
+ [GRANULE_MODE_8K] = "8K",
+ [GRANULE_MODE_16K] = "16K",
+ [GRANULE_MODE_64K] = "64K",
+ [GRANULE_MODE_HOST] = "host",
+ },
+ .size = GRANULE_MODE__MAX
+};
... and this supposed to be QAPI generated?