diff mbox

[PULL,v2,05/23] pc-dimm: add pc_dimm_build_list()

Message ID 1456391643-21857-6-git-send-email-mst@redhat.com
State New
Headers show

Commit Message

Michael S. Tsirkin Feb. 25, 2016, 9:16 a.m. UTC
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

Like pc_dimm_build_list_sorted but not sorted - for cases where sorting
is not necessary. Add stubbed version too - for targets without
CONFIG_MEM_HOTPLUG.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/mem/pc-dimm.h        |  3 +++
 hw/mem/pc-dimm.c                | 15 +++++++++++++++
 stubs/qmp_pc_dimm_device_list.c |  8 --------
 stubs/Makefile.objs             |  1 -
 4 files changed, 18 insertions(+), 9 deletions(-)
 delete mode 100644 stubs/qmp_pc_dimm_device_list.c

Comments

Vladimir Sementsov-Ogievskiy Feb. 25, 2016, 9:57 a.m. UTC | #1
here stubs are deleted. it will break compilation for targets without 
memory hotplug, it was discussed on list. stubs from my patch are 
necessary.

On 25.02.2016 12:16, Michael S. Tsirkin wrote:
> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>
> Like pc_dimm_build_list_sorted but not sorted - for cases where sorting
> is not necessary. Add stubbed version too - for targets without
> CONFIG_MEM_HOTPLUG.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   include/hw/mem/pc-dimm.h        |  3 +++
>   hw/mem/pc-dimm.c                | 15 +++++++++++++++
>   stubs/qmp_pc_dimm_device_list.c |  8 --------
>   stubs/Makefile.objs             |  1 -
>   4 files changed, 18 insertions(+), 9 deletions(-)
>   delete mode 100644 stubs/qmp_pc_dimm_device_list.c
>
> diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> index 218dfb0..0f587a4 100644
> --- a/include/hw/mem/pc-dimm.h
> +++ b/include/hw/mem/pc-dimm.h
> @@ -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
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index 835179e..09e99ce 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -267,6 +267,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,
> diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm_device_list.c
> deleted file mode 100644
> index def2115..0000000
> --- a/stubs/qmp_pc_dimm_device_list.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -#include "qemu/osdep.h"
> -#include "qom/object.h"
> -#include "hw/mem/pc-dimm.h"
> -
> -int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> -{
> -   return 0;
> -}
> diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> index e922de9..bccd445 100644
> --- a/stubs/Makefile.objs
> +++ b/stubs/Makefile.objs
> @@ -35,7 +35,6 @@ stub-obj-y += vmstate.o
>   stub-obj-$(CONFIG_WIN32) += fd-register.o
>   stub-obj-y += cpus.o
>   stub-obj-y += kvm.o
> -stub-obj-y += qmp_pc_dimm_device_list.o
>   stub-obj-y += target-monitor-defs.o
>   stub-obj-y += target-get-monitor-def.o
>   stub-obj-y += vhost.o
diff mbox

Patch

diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index 218dfb0..0f587a4 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -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
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 835179e..09e99ce 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -267,6 +267,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,
diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm_device_list.c
deleted file mode 100644
index def2115..0000000
--- a/stubs/qmp_pc_dimm_device_list.c
+++ /dev/null
@@ -1,8 +0,0 @@ 
-#include "qemu/osdep.h"
-#include "qom/object.h"
-#include "hw/mem/pc-dimm.h"
-
-int qmp_pc_dimm_device_list(Object *obj, void *opaque)
-{
-   return 0;
-}
diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
index e922de9..bccd445 100644
--- a/stubs/Makefile.objs
+++ b/stubs/Makefile.objs
@@ -35,7 +35,6 @@  stub-obj-y += vmstate.o
 stub-obj-$(CONFIG_WIN32) += fd-register.o
 stub-obj-y += cpus.o
 stub-obj-y += kvm.o
-stub-obj-y += qmp_pc_dimm_device_list.o
 stub-obj-y += target-monitor-defs.o
 stub-obj-y += target-get-monitor-def.o
 stub-obj-y += vhost.o