[PATCH 1/6] schema: Introduce acpi-generic-initiator definition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Introduce the definition of a new acpi-generic-initiator object that can
be used to link a PCI device with multiple NUMA nodes.

Link: https://mail.gnu.org/archive/html/qemu-arm/2024-03/msg00358.html

Signed-off-by: Andrea Righi <arighi@xxxxxxxxxx>
---
 src/conf/domain_conf.c            | 25 +++++++++++++++++++++++++
 src/conf/domain_conf.h            | 13 +++++++++++++
 src/conf/schemas/domaincommon.rng | 19 +++++++++++++++++++
 src/conf/virconftypes.h           |  2 ++
 4 files changed, 59 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 49555efc56..3d5836ee0e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3457,6 +3457,19 @@ virDomainHostdevDefNew(void)
 }
 
 
+virDomainAcpiInitiatorDef *
+virDomainAcpiInitiatorDefNew(void)
+{
+    virDomainAcpiInitiatorDef *def;
+
+    def = g_new0(virDomainAcpiInitiatorDef, 1);
+
+    def->info = g_new0(virDomainDeviceInfo, 1);
+
+    return def;
+}
+
+
 static virDomainTPMDef *
 virDomainTPMDefNew(virDomainXMLOption *xmlopt)
 {
@@ -3517,6 +3530,18 @@ void virDomainHostdevDefFree(virDomainHostdevDef *def)
         g_free(def);
 }
 
+void virDomainAcpiInitiatorDefFree(virDomainAcpiInitiatorDef *def)
+{
+    if (!def)
+        return;
+
+    VIR_FREE(def->name);
+    VIR_FREE(def->pciDev);
+
+    virDomainDeviceInfoFree(def->info);
+    g_free(def);
+}
+
 void virDomainHubDefFree(virDomainHubDef *def)
 {
     if (!def)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 9da6586e66..74840cdb39 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -122,6 +122,7 @@ struct _virDomainDeviceDef {
         virDomainAudioDef *audio;
         virDomainCryptoDef *crypto;
         virDomainPstoreDef *pstore;
+        virDomainAcpiInitiatorDef *acpiinitiator;
     } data;
 };
 
@@ -353,6 +354,13 @@ typedef enum {
     VIR_DOMAIN_STARTUP_POLICY_LAST
 } virDomainStartupPolicy;
 
+struct _virDomainAcpiInitiatorDef {
+    char *name;
+    char *pciDev;
+    int numaNode;
+    virDomainDeviceInfo *info; /* Guest address */
+};
+
 /* basic device for direct passthrough */
 struct _virDomainHostdevDef {
     /* If 'parentnet' is non-NULL it means this host dev was
@@ -3210,6 +3218,9 @@ struct _virDomainDef {
     size_t ntpms;
     virDomainTPMDef **tpms;
 
+    size_t nacpiinitiator;
+    virDomainAcpiInitiatorDef **acpiinitiator;
+
     /* Only 1 */
     virDomainMemballoonDef *memballoon;
     virDomainNVRAMDef *nvram;
@@ -3690,6 +3701,8 @@ virDomainVideoDef *virDomainVideoDefNew(virDomainXMLOption *xmlopt);
 void virDomainVideoDefFree(virDomainVideoDef *def);
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainVideoDef, virDomainVideoDefFree);
 void virDomainVideoDefClear(virDomainVideoDef *def);
+virDomainAcpiInitiatorDef *virDomainAcpiInitiatorDefNew(void);
+void virDomainAcpiInitiatorDefFree(virDomainAcpiInitiatorDef *def);
 virDomainHostdevDef *virDomainHostdevDefNew(void);
 void virDomainHostdevDefFree(virDomainHostdevDef *def);
 void virDomainHubDefFree(virDomainHubDef *def);
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index 3328a63205..1a8846246e 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -6837,6 +6837,7 @@
             <ref name="shmem"/>
             <ref name="memorydev"/>
             <ref name="crypto"/>
+            <ref name="acpi-generic-initiator"/>
           </choice>
         </zeroOrMore>
         <zeroOrMore>
@@ -7656,6 +7657,24 @@
     </element>
   </define>
 
+  <define name="acpi-generic-initiator">
+    <element name="acpi-generic-initiator">
+      <interleave>
+        <element name="alias">
+          <attribute name="name">
+            <text/>
+          </attribute>
+        </element>
+        <element name="pci-dev">
+          <text/>
+        </element>
+        <element name="numa-node">
+          <text/>
+        </element>
+      </interleave>
+    </element>
+  </define>
+
   <define name="crypto">
     <element name="crypto">
       <attribute name="model">
diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h
index 59be61cea4..564c06638e 100644
--- a/src/conf/virconftypes.h
+++ b/src/conf/virconftypes.h
@@ -118,6 +118,8 @@ typedef struct _virDomainHostdevCaps virDomainHostdevCaps;
 
 typedef struct _virDomainHostdevDef virDomainHostdevDef;
 
+typedef struct _virDomainAcpiInitiatorDef virDomainAcpiInitiatorDef;
+
 typedef struct _virDomainHostdevSubsys virDomainHostdevSubsys;
 
 typedef struct _virDomainHostdevSubsysMediatedDev virDomainHostdevSubsysMediatedDev;
-- 
2.48.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux