Add support to the qemu driver to generate the proper command line for
the acpi-generic-initiator definitions.

Signed-off-by: Andrea Righi <ari...@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

Reply via email to