Add support to the qemu driver to generate the proper command line for
the acpi-generic-initiator definitions.
Signed-off-by: Andrea Righi <arighi@nvidia.com>
---
src/qemu/qemu_command.c | 30 +++++++++++++++++++
.../acpi-generic-initiator.x86_64-latest.args | 8 +++++
2 files changed, 38 insertions(+)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 46af5abd62..b40967f27a 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -10582,6 +10582,31 @@ qemuBuildPstoreCommandLine(virCommand *cmd,
return 0;
}
+static int
+qemuBuildAcpiInitiatorCommandLine(virCommand *cmd,
+ const virDomainAcpiInitiatorDef *acpiinitiator)
+{
+ g_autoptr(virJSONValue) props = NULL;
+
+ if (virJSONValueObjectAdd(&props,
+ "s:qom-type", "acpi-generic-initiator",
+ "s:id", acpiinitiator->info.alias,
+ "s:pci-dev", acpiinitiator->pciDev,
+ "i:node", acpiinitiator->numaNode,
+ NULL) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Failed to build acpi-generic-initiator properties"));
+ return -1;
+ }
+
+ if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Failed to build QEMU command line for acpi-generic-initiator"));
+ return -1;
+ }
+
+ return 0;
+}
static int
qemuBuildAsyncTeardownCommandLine(virCommand *cmd,
@@ -10940,6 +10965,11 @@ qemuBuildCommandLine(virDomainObj *vm,
qemuBuildPstoreCommandLine(cmd, def, def->pstore, qemuCaps) < 0)
return NULL;
+ for (i = 0; i < def->nacpiinitiator; i++) {
+ if (qemuBuildAcpiInitiatorCommandLine(cmd, def->acpiinitiator[i]) < 0)
+ return NULL;
+ }
+
if (qemuBuildAsyncTeardownCommandLine(cmd, def, qemuCaps) < 0)
return NULL;
diff --git a/tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args b/tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
index 37712fb68d..366b696435 100644
--- a/tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
@@ -44,4 +44,12 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest2/.config \
-device '{"driver":"vfio-pci","host":"0000:06:12.1","id":"hostdev0","bus":"pcie.0","addr":"0x2"}' \
-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pcie.0","addr":"0x6"}' \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi0","pci-dev":"hostdev0","node":1}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi1","pci-dev":"hostdev0","node":2}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi2","pci-dev":"hostdev0","node":3}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi3","pci-dev":"hostdev0","node":4}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi4","pci-dev":"hostdev0","node":5}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi5","pci-dev":"hostdev0","node":6}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi6","pci-dev":"hostdev0","node":7}' \
+-object '{"qom-type":"acpi-generic-initiator","id":"gi7","pci-dev":"hostdev0","node":8}' \
-msg timestamp=on
--
2.50.1