@@ -266,6 +266,21 @@ static int pc_dimm_build_list_sorted(Object *obj, void *opaque)
return 0;
}
+int pc_dimm_build_list(Object *obj, void *opaque)
+{
+ GSList **list = opaque;
+
+ if (object_dynamic_cast(obj, TYPE_PC_DIMM)) {
+ DeviceState *dev = DEVICE(obj);
+ if (dev->realized) { /* only realized DIMMs matter */
+ *list = g_slist_prepend(*list, dev);
+ }
+ }
+
+ object_child_foreach(obj, pc_dimm_build_list, opaque);
+ return 0;
+}
+
uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
uint64_t address_space_size,
uint64_t *hint, uint64_t align, uint64_t size,
@@ -94,4 +94,7 @@ void pc_dimm_memory_plug(DeviceState *dev, MemoryHotplugState *hpms,
MemoryRegion *mr, uint64_t align, Error **errp);
void pc_dimm_memory_unplug(DeviceState *dev, MemoryHotplugState *hpms,
MemoryRegion *mr);
+
+int pc_dimm_build_list(Object *obj, void *opaque);
+
#endif
Like pc_dimm_build_list_sorted but not sorted - for cases where sorting is not necessary. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> CC: Stefan Hajnoczi <stefanha@redhat.com> CC: Xiao Guangrong <guangrong.xiao@linux.intel.com> CC: "Michael S. Tsirkin" <mst@redhat.com> CC: Igor Mammedov <imammedo@redhat.com> CC: Eric Blake <eblake@redhat.com> CC: Markus Armbruster <armbru@redhat.com> --- hw/mem/pc-dimm.c | 15 +++++++++++++++ include/hw/mem/pc-dimm.h | 3 +++ 2 files changed, 18 insertions(+)