Hi Philippe, On 2/23/24 08:52, Philippe Mathieu-Daudé wrote: > 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.au...@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? If I remove both, it does not compile. How do you make it generated?
Thanks Eric