[PATCH v3 08/32] hw/arm/virt: Store SMMUv3 device objects in VirtMachineState.

Shameer Kolothum posted 32 patches 3 days, 22 hours ago
[PATCH v3 08/32] hw/arm/virt: Store SMMUv3 device objects in VirtMachineState.
Posted by Shameer Kolothum 3 days, 22 hours ago
Introduce a GPtrArray in VirtMachineState to keep track of all
SMMUv3 devices created on the virt machine.

This will avoid relying on object_child_foreach_recursive() walks
of the object tree when accessing SMMUv3 instances. Subsequent
patches will use this list during ACPI IORT table generation and
for CMDQV-related handling.

No functional change.

Signed-off-by: Shameer Kolothum <skolothumtho@nvidia.com>
---
 include/hw/arm/virt.h | 1 +
 hw/arm/virt.c         | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index 8069422769..f9437e6410 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -186,6 +186,7 @@ struct VirtMachineState {
     MemoryRegion *sysmem;
     MemoryRegion *secure_sysmem;
     bool pci_preserve_config;
+    GPtrArray *smmuv3_devices;
 };
 
 #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 50865e8115..292e523664 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -3232,6 +3232,7 @@ static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev,
             }
 
             create_smmuv3_dev_dtb(vms, dev, bus, errp);
+            g_ptr_array_add(vms->smmuv3_devices, dev);
         }
     }
 
@@ -3659,6 +3660,8 @@ static void virt_instance_init(Object *obj)
     vms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6);
     vms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8);
     cxl_machine_init(obj, &vms->cxl_devices_state);
+
+    vms->smmuv3_devices = g_ptr_array_new_with_free_func(NULL);
 }
 
 static const TypeInfo virt_machine_info = {
-- 
2.43.0