On 6/8/25 22:44, Andrea Righi via Devel wrote:
Introduce apci-generic-initiator device to the domain XML.
Example definition:
<acpi-generic-initiator>
<pci-dev>dev0</pci-dev>
<numa-node>1</numa-node>
</acpi-generic-initiator>
This enables partitioning of PCI resources into multiple isolated
instances, each requiring a dedicated NUMA node definition, that can be
represented by the acpi-generic-initiator object.
Signed-off-by: Andrea Righi <arighi(a)nvidia.com>
---
src/ch/ch_domain.c | 1 +
src/conf/domain_conf.c | 122 ++++++++++++++++++++++++++++--
src/conf/domain_conf.h | 5 +-
src/conf/domain_postparse.c | 1 +
src/conf/domain_validate.c | 37 +++++++++
src/conf/schemas/domaincommon.rng | 7 +-
src/hyperv/hyperv_driver.c | 1 +
src/libxl/libxl_driver.c | 6 ++
src/lxc/lxc_driver.c | 6 ++
src/qemu/qemu_alias.c | 11 +++
src/qemu/qemu_command.c | 1 +
src/qemu/qemu_domain.c | 2 +
src/qemu/qemu_domain_address.c | 4 +
src/qemu/qemu_driver.c | 3 +
src/qemu/qemu_hotplug.c | 5 ++
src/qemu/qemu_postparse.c | 1 +
src/qemu/qemu_validate.c | 1 +
src/test/test_driver.c | 4 +
18 files changed, 205 insertions(+), 13 deletions(-)
diff --git a/src/qemu/qemu_domain_address.c
b/src/qemu/qemu_domain_address.c
index e89cdee487..573bbc282c 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -471,6 +471,7 @@ qemuDomainDeviceSupportZPCI(virDomainDeviceDef *device)
case VIR_DOMAIN_DEVICE_AUDIO:
case VIR_DOMAIN_DEVICE_CRYPTO:
case VIR_DOMAIN_DEVICE_PSTORE:
+ case VIR_DOMAIN_DEVICE_ACPI_INITIATOR:
break;
case VIR_DOMAIN_DEVICE_NONE:
@@ -819,6 +820,9 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDef *dev,
return pciFlags;
}
+ case VIR_DOMAIN_DEVICE_ACPI_INITIATOR:
+ return pciFlags;
+
This doesn't make much sense to me. In QEMU this is just an object, not
a device. IOW, it's not 'guest visible' and thus doesn't connect to any
bus really.
case VIR_DOMAIN_DEVICE_MEMBALLOON:
switch (dev->data.memballoon->model) {
case VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO_TRANSITIONAL:
Michal