On Tue, 6 Apr 2021 16:31:36 +0100 Daniel P. Berrangé <berrange@xxxxxxxxxx> wrote: > This property is exposed by QEMU on any PCI device, but we have to pick > some specific device(s) to probe it against. We expect that at least one > of the virtio devices will be present, so probe against them. Would it be useful to expose capability with MachineInfo in QAPI schema? At least with this on QEMU side I can imagine a crude check and error out in case device has acpi-index set but machine doesn't support it. > > Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> > --- > src/qemu/qemu_capabilities.c | 8 ++++++++ > src/qemu/qemu_capabilities.h | 3 +++ > tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 + > 3 files changed, 12 insertions(+) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index ea24e2d6a5..f44a06c5c9 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -625,6 +625,9 @@ VIR_ENUM_IMPL(virQEMUCaps, > "blockdev-backup", > "object.qapified", > "rotation-rate", > + > + /* 400 */ > + "acpi-index", > ); > > > @@ -1363,6 +1366,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioBalloon[] > { "ats", QEMU_CAPS_VIRTIO_PCI_ATS, NULL }, > { "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL }, > { "free-page-reporting", QEMU_CAPS_VIRTIO_BALLOON_FREE_PAGE_REPORTING, NULL }, > + { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, > }; > > > @@ -1395,6 +1399,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioBlk[] = { > { "write-cache", QEMU_CAPS_DISK_WRITE_CACHE, NULL }, > { "werror", QEMU_CAPS_STORAGE_WERROR, NULL }, > { "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL }, > + { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, > }; > > static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioNet[] = { > @@ -1408,6 +1413,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioNet[] = { > { "ats", QEMU_CAPS_VIRTIO_PCI_ATS, NULL }, > { "failover", QEMU_CAPS_VIRTIO_NET_FAILOVER, NULL }, > { "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL }, > + { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, > }; > > static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsPCIeRootPort[] = { > @@ -1428,6 +1434,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioSCSI[] = { > { "iommu_platform", QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM, NULL }, > { "ats", QEMU_CAPS_VIRTIO_PCI_ATS, NULL }, > { "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL }, > + { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, > }; > > static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVfioPCI[] = { > @@ -1499,6 +1506,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVirtioGpu[] = { > { "iommu_platform", QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM, NULL }, > { "ats", QEMU_CAPS_VIRTIO_PCI_ATS, NULL }, > { "packed", QEMU_CAPS_VIRTIO_PACKED_QUEUES, NULL }, > + { "acpi-index", QEMU_CAPS_ACPI_INDEX, NULL }, > }; > > static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsICH9[] = { > diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h > index a70c00a265..22ff3a2f15 100644 > --- a/src/qemu/qemu_capabilities.h > +++ b/src/qemu/qemu_capabilities.h > @@ -606,6 +606,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ > QEMU_CAPS_OBJECT_QAPIFIED, /* parameters for object-add are formally described */ > QEMU_CAPS_ROTATION_RATE, /* scsi-disk / ide-drive rotation-rate prop */ > > + /* 400 */ > + QEMU_CAPS_ACPI_INDEX, /* PCI device 'acpi-index' property */ > + > QEMU_CAPS_LAST /* this must always be the last item */ > } virQEMUCapsFlags; > > diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml > index 984a2d5896..592560c3ef 100644 > --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml > +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml > @@ -261,6 +261,7 @@ > <flag name='blockdev-backup'/> > <flag name='object.qapified'/> > <flag name='rotation-rate'/> > + <flag name='acpi-index'/> > <version>5002091</version> > <kvmVersion>0</kvmVersion> > <microcodeVersion>43100242</microcodeVersion>