All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates
@ 2017-08-29 15:30 Vadim Galitsyn
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 1/3] hmp: extend "info numa" with hotplugged memory information Vadim Galitsyn
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Vadim Galitsyn @ 2017-08-29 15:30 UTC (permalink / raw)
  To: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Igor Mammedov, Eric Blake, qemu-devel

Hi Guys,

Sorry for the delay. This is continuation of
  http://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02937.html.

I tried to update all the things according to your input
regarding to v6 series. I am attaching all the versions
history here in cover letter.

Best regards,
Vadim

v7:
 * hmp: 'info numa': 'struct numa_node_mem' ->
   'struct NumaNodeMem' (Eric);

 * hmp: 'info numa': 'numa_node_mem.node_hotpluggable_mem' ->
   'NumaNodeMem.node_plugged_mem' (in order to follow the same
   naming schema as in the rest patches from this series);

 * hmp: hmp_info_memory_size_summary() no longer
   uses &error_abort (David);

 * qmp: documented when @plugged-memory info is omitted (Eric);

 * qmp: added example usage of @query-memory-size-summary (Eric);

 * qmp: 'Since: 2.10.0' -> 'Since: 2.11.0' (Eric);

 * All commit messages updated according to Eric's recomendation.

v6:
 * qmp: Renamed get_existing_hotpluggable_memory_size() ->
   get_plugged_memory_size();

 * qmp: Renamed MemoryInfo.hotunpluggable_memory ->
   MemoryInfo.plugged_memory;

 * qmp: Dropped superfluous parenthesis around the
   comparison while evaluating MemoryInfo.has_plugged_memory.

 * hmp: Renamed 'info memory-size-summary' ->
   'info memory_size_summary'

v5:
 * hmp: Updated description and '.help' message for
   'info memory-size-summary' command.

 * hmp: Removed '-' characters from
   'info memory-size-summary' output.

 * Dropped ballooned memory information.

 * get_existing_hotpluggable_memory_size() assumed
   to never fail; routine now has no arguments and
   returns uint64_t; in case if target does not support
   memory hotplug, (uint64_t)-1 is returned.

 * MemoryInfo structure:
   * Removed @balloon-actual-memory field.
   * Field @hotpluggable-memory renamed
     to @hotunpluggable-memory.
   * Updated description for fields.

 * qmp: Updated description for
   query-memory-size-summary.

 * Patch v4 splitted into series.

v4:
 * Commands "info memory" and "query-memory" were renamed
   to "info memory-size-summary" and "query-memory-size-summary"
   correspondingly.
 * Descriptions for both commands as well as MemoryInfo structure
   fields were updated/renamed according to
   http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg05972.html.
 * In MemoryInfo structure following fields are now optional:
   hotpluggable-memory and balloon-actual-memory.
 * Field "hotpluggable-memory" now not displayed in HMP if target
   has no CONFIG_MEM_HOTPLUG enabled.
 * Field "balloon-actual-memory" now not displayed in HMP if
   ballooning not enabled.
 * qapi_free_MemoryInfo() used in order to free corresponding memory
   instead of g_free().
 * #ifdef CONFIG_MEM_HOTPLUG was removed and replaced with stubs/ approach.
   get_exiting_hotpluggable_memory_size() function was introduced in
   hw/mem/pc-dimm.c (available for all targets which have CONFIG_MEM_HOTPLUG
   enabled). For other targets, there is a stub in stubs/qmp_pc_dimm.c.
   In addition, stubs/qmp_pc_dimm_device_list.c was renamed to
   stubs/qmp_pc_dimm.c in order to reflect actual source file content.
 * Commit message was updated in order to reflect what was changed.

v3:
 * Use PRIu64 instead of 'lu' when printing results via HMP.
 * Report zero hot-plugged memory instead of reporting error
   when target architecture has no CONFIG_MEM_HOTPLUG enabled.

v2:
 * Fixed build for targets which do not have CONFIG_MEM_HOTPLUG
   enabled.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [Qemu-devel] [PATCH v7 1/3] hmp: extend "info numa" with hotplugged memory information
  2017-08-29 15:30 [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
@ 2017-08-29 15:30 ` Vadim Galitsyn
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command Vadim Galitsyn
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: Vadim Galitsyn @ 2017-08-29 15:30 UTC (permalink / raw)
  To: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Igor Mammedov, Eric Blake, qemu-devel
  Cc: Vadim Galitsyn

Report amount of hotplugged memory in addition to total
amount per NUMA node.

Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: qemu-devel@nongnu.org
---
 include/qemu/typedefs.h |  1 +
 include/sysemu/numa.h   |  7 ++++++-
 monitor.c               |  9 ++++++---
 numa.c                  | 18 +++++++++++++-----
 4 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 39bc8351a3..163550214c 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -58,6 +58,7 @@ typedef struct MSIMessage MSIMessage;
 typedef struct NetClientState NetClientState;
 typedef struct NetFilterState NetFilterState;
 typedef struct NICInfo NICInfo;
+typedef struct NumaNodeMem NumaNodeMem;
 typedef struct PcGuestInfo PcGuestInfo;
 typedef struct PCIBridge PCIBridge;
 typedef struct PCIBus PCIBus;
diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h
index 610eece211..5c6df2820b 100644
--- a/include/sysemu/numa.h
+++ b/include/sysemu/numa.h
@@ -24,9 +24,14 @@ struct node_info {
     uint8_t distance[MAX_NODES];
 };
 
+struct NumaNodeMem {
+    uint64_t node_mem;
+    uint64_t node_plugged_mem;
+};
+
 extern NodeInfo numa_info[MAX_NODES];
 void parse_numa_opts(MachineState *ms);
-void query_numa_node_mem(uint64_t node_mem[]);
+void query_numa_node_mem(NumaNodeMem node_mem[]);
 extern QemuOptsList qemu_numa_opts;
 void numa_set_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node);
 void numa_unset_mem_node_id(ram_addr_t addr, uint64_t size, uint32_t node);
diff --git a/monitor.c b/monitor.c
index e0f880107f..6c9d183caf 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1710,11 +1710,12 @@ static void hmp_info_mtree(Monitor *mon, const QDict *qdict)
 static void hmp_info_numa(Monitor *mon, const QDict *qdict)
 {
     int i;
-    uint64_t *node_mem;
+    NumaNodeMem *node_mem;
     CpuInfoList *cpu_list, *cpu;
 
     cpu_list = qmp_query_cpus(&error_abort);
-    node_mem = g_new0(uint64_t, nb_numa_nodes);
+    node_mem = g_new0(NumaNodeMem, nb_numa_nodes);
+
     query_numa_node_mem(node_mem);
     monitor_printf(mon, "%d nodes\n", nb_numa_nodes);
     for (i = 0; i < nb_numa_nodes; i++) {
@@ -1727,7 +1728,9 @@ static void hmp_info_numa(Monitor *mon, const QDict *qdict)
         }
         monitor_printf(mon, "\n");
         monitor_printf(mon, "node %d size: %" PRId64 " MB\n", i,
-                       node_mem[i] >> 20);
+                       node_mem[i].node_mem >> 20);
+        monitor_printf(mon, "node %d plugged: %" PRId64 " MB\n", i,
+                       node_mem[i].node_plugged_mem >> 20);
     }
     qapi_free_CpuInfoList(cpu_list);
     g_free(node_mem);
diff --git a/numa.c b/numa.c
index e32af04cd2..fe066ad2f8 100644
--- a/numa.c
+++ b/numa.c
@@ -591,11 +591,12 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
     }
 }
 
-static void numa_stat_memory_devices(uint64_t node_mem[])
+static void numa_stat_memory_devices(NumaNodeMem node_mem[])
 {
     MemoryDeviceInfoList *info_list = NULL;
     MemoryDeviceInfoList **prev = &info_list;
     MemoryDeviceInfoList *info;
+    PCDIMMDeviceInfo     *pcdimm_info;
 
     qmp_pc_dimm_device_list(qdev_get_machine(), &prev);
     for (info = info_list; info; info = info->next) {
@@ -603,9 +604,16 @@ static void numa_stat_memory_devices(uint64_t node_mem[])
 
         if (value) {
             switch (value->type) {
-            case MEMORY_DEVICE_INFO_KIND_DIMM:
-                node_mem[value->u.dimm.data->node] += value->u.dimm.data->size;
+            case MEMORY_DEVICE_INFO_KIND_DIMM: {
+                pcdimm_info = value->u.dimm.data;
+                node_mem[pcdimm_info->node].node_mem += pcdimm_info->size;
+                if (pcdimm_info->hotpluggable && pcdimm_info->hotplugged) {
+                    node_mem[pcdimm_info->node].node_plugged_mem +=
+                        pcdimm_info->size;
+                }
                 break;
+            }
+
             default:
                 break;
             }
@@ -614,7 +622,7 @@ static void numa_stat_memory_devices(uint64_t node_mem[])
     qapi_free_MemoryDeviceInfoList(info_list);
 }
 
-void query_numa_node_mem(uint64_t node_mem[])
+void query_numa_node_mem(NumaNodeMem node_mem[])
 {
     int i;
 
@@ -624,7 +632,7 @@ void query_numa_node_mem(uint64_t node_mem[])
 
     numa_stat_memory_devices(node_mem);
     for (i = 0; i < nb_numa_nodes; i++) {
-        node_mem[i] += numa_info[i].node_mem;
+        node_mem[i].node_mem += numa_info[i].node_mem;
     }
 }
 
-- 
2.13.1.394.g41dd433

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command
  2017-08-29 15:30 [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 1/3] hmp: extend "info numa" with hotplugged memory information Vadim Galitsyn
@ 2017-08-29 15:30 ` Vadim Galitsyn
  2017-09-14  9:57   ` Igor Mammedov
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command Vadim Galitsyn
  2017-09-14  9:35 ` [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
  3 siblings, 1 reply; 13+ messages in thread
From: Vadim Galitsyn @ 2017-08-29 15:30 UTC (permalink / raw)
  To: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Igor Mammedov, Eric Blake, qemu-devel
  Cc: Vadim Galitsyn, Vasilis Liaskovitis, Mohammed Gamal, Eduardo Otubo

Add a new query-memory-size-summary command which provides the
following memory information in bytes:

  * base-memory - size of "base" memory specified with command line option -m.

  * plugged-memory - amount of memory that was hot-plugged.
    If target does not have CONFIG_MEM_HOTPLUG enabled, no
    value is reported.

Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org
---
 qapi-schema.json                                   | 32 ++++++++++++++++++++++
 include/hw/mem/pc-dimm.h                           |  1 +
 hw/mem/pc-dimm.c                                   |  5 ++++
 qmp.c                                              | 13 +++++++++
 stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} |  5 ++++
 stubs/Makefile.objs                                |  2 +-
 6 files changed, 57 insertions(+), 1 deletion(-)
 rename stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} (68%)

diff --git a/qapi-schema.json b/qapi-schema.json
index 802ea53d00..9402ac3b3a 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -4407,6 +4407,38 @@
   'data': { 'name': 'str', '*migration-safe': 'bool', 'static': 'bool',
             '*unavailable-features': [ 'str' ], 'typename': 'str' } }
 
+##
+# @MemoryInfo:
+#
+# Actual memory information in bytes.
+#
+# @base-memory: size of "base" memory specified with command line
+#               option -m.
+#
+# @plugged-memory: size memory that can be hot-unplugged. This field
+#                  is omitted if target does support memory hotplug
+#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build time).
+#
+# Since: 2.11.0
+##
+{ 'struct': 'MemoryInfo',
+  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
+
+##
+# @query-memory-size-summary:
+#
+# Return the amount of initially allocated and hot-plugged (if
+# enabled) memory in bytes.
+#
+# Example:
+#
+# -> { "execute": "query-memory-size-summary" }
+# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
+#
+# Since: 2.11.0
+##
+{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
+
 ##
 # @query-cpu-definitions:
 #
diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index 6f8c3eb1b3..d83b957829 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -95,6 +95,7 @@ int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp);
 
 int qmp_pc_dimm_device_list(Object *obj, void *opaque);
 uint64_t pc_existing_dimms_capacity(Error **errp);
+uint64_t get_plugged_memory_size(void);
 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,
diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index bdf6649083..66eace5a5c 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -159,6 +159,11 @@ uint64_t pc_existing_dimms_capacity(Error **errp)
     return cap.size;
 }
 
+uint64_t get_plugged_memory_size(void)
+{
+    return pc_existing_dimms_capacity(&error_abort);
+}
+
 int qmp_pc_dimm_device_list(Object *obj, void *opaque)
 {
     MemoryDeviceInfoList ***prev = opaque;
diff --git a/qmp.c b/qmp.c
index b86201e349..e8c303116a 100644
--- a/qmp.c
+++ b/qmp.c
@@ -709,3 +709,16 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp)
 
     return head;
 }
+
+MemoryInfo *qmp_query_memory_size_summary(Error **errp)
+{
+    MemoryInfo *mem_info = g_malloc0(sizeof(MemoryInfo));
+
+    mem_info->base_memory = ram_size;
+
+    mem_info->plugged_memory = get_plugged_memory_size();
+    mem_info->has_plugged_memory =
+        mem_info->plugged_memory != (uint64_t)-1;
+
+    return mem_info;
+}
diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm.c
similarity index 68%
rename from stubs/qmp_pc_dimm_device_list.c
rename to stubs/qmp_pc_dimm.c
index def211564d..9ddc4f619a 100644
--- a/stubs/qmp_pc_dimm_device_list.c
+++ b/stubs/qmp_pc_dimm.c
@@ -6,3 +6,8 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
 {
    return 0;
 }
+
+uint64_t get_plugged_memory_size(void)
+{
+    return (uint64_t)-1;
+}
diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
index e69c217aff..f5f139f310 100644
--- a/stubs/Makefile.objs
+++ b/stubs/Makefile.objs
@@ -33,7 +33,7 @@ stub-obj-y += uuid.o
 stub-obj-y += vm-stop.o
 stub-obj-y += vmstate.o
 stub-obj-$(CONFIG_WIN32) += fd-register.o
-stub-obj-y += qmp_pc_dimm_device_list.o
+stub-obj-y += qmp_pc_dimm.o
 stub-obj-y += target-monitor-defs.o
 stub-obj-y += target-get-monitor-def.o
 stub-obj-y += pc_madt_cpu_entry.o
-- 
2.13.1.394.g41dd433

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command
  2017-08-29 15:30 [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 1/3] hmp: extend "info numa" with hotplugged memory information Vadim Galitsyn
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command Vadim Galitsyn
@ 2017-08-29 15:30 ` Vadim Galitsyn
  2017-09-14 10:00   ` Igor Mammedov
  2017-09-14  9:35 ` [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
  3 siblings, 1 reply; 13+ messages in thread
From: Vadim Galitsyn @ 2017-08-29 15:30 UTC (permalink / raw)
  To: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Igor Mammedov, Eric Blake, qemu-devel
  Cc: Vadim Galitsyn, Vasilis Liaskovitis, Mohammed Gamal, Eduardo Otubo

Add 'info memory_size_summary' command which is a sibling
of QMP command query-memory-size-summary. It provides the
following memory information in bytes:

  * base-memory - size of "base" memory specified with command line option -m.

  * plugged-memory - amount of memory that was hot-plugged.
    If target does not have CONFIG_MEM_HOTPLUG enabled, no
    value is reported.

Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org
---
 hmp.h                |  1 +
 hmp.c                | 18 ++++++++++++++++++
 hmp-commands-info.hx | 16 ++++++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/hmp.h b/hmp.h
index 1ff455295e..3605003e4c 100644
--- a/hmp.h
+++ b/hmp.h
@@ -145,5 +145,6 @@ void hmp_info_dump(Monitor *mon, const QDict *qdict);
 void hmp_info_ramblock(Monitor *mon, const QDict *qdict);
 void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict);
 void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict);
+void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict);
 
 #endif
diff --git a/hmp.c b/hmp.c
index fd80dce758..b718dab4df 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2868,3 +2868,21 @@ void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
     hmp_handle_error(mon, &err);
     qapi_free_GuidInfo(info);
 }
+
+void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict)
+{
+    Error *err = NULL;
+    MemoryInfo *info = qmp_query_memory_size_summary(&err);
+    if (info) {
+        monitor_printf(mon, "base memory: %" PRIu64 "\n",
+                       info->base_memory);
+
+        if (info->has_plugged_memory) {
+            monitor_printf(mon, "plugged memory: %" PRIu64 "\n",
+                           info->plugged_memory);
+        }
+
+        qapi_free_MemoryInfo(info);
+    }
+    hmp_handle_error(mon, &err);
+}
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
index d9df238a5f..04c9db81f6 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -849,6 +849,22 @@ ETEXI
         .cmd = hmp_info_vm_generation_id,
     },
 
+STEXI
+@item info memory_size_summary
+@findex memory_size_summary
+Display the amount of initially allocated and hot-plugged (if
+enabled) memory in bytes.
+ETEXI
+
+    {
+        .name       = "memory_size_summary",
+        .args_type  = "",
+        .params     = "",
+        .help       = "show the amount of initially allocated and "
+                      "hot-plugged (if enabled) memory in bytes.",
+        .cmd        = hmp_info_memory_size_summary,
+    },
+
 STEXI
 @end table
 ETEXI
-- 
2.13.1.394.g41dd433

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates
  2017-08-29 15:30 [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
                   ` (2 preceding siblings ...)
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command Vadim Galitsyn
@ 2017-09-14  9:35 ` Vadim Galitsyn
  2017-09-14 10:02   ` Igor Mammedov
  3 siblings, 1 reply; 13+ messages in thread
From: Vadim Galitsyn @ 2017-09-14  9:35 UTC (permalink / raw)
  To: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Igor Mammedov, Eric Blake, qemu-devel

Hi Guys,

Could you please let me know if you have an update on this topic?

Thank you,
Vadim

On Tue, Aug 29, 2017 at 5:30 PM, Vadim Galitsyn <
vadim.galitsyn@profitbricks.com> wrote:

> Hi Guys,
>
> Sorry for the delay. This is continuation of
>   http://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02937.html.
>
> I tried to update all the things according to your input
> regarding to v6 series. I am attaching all the versions
> history here in cover letter.
>
> Best regards,
> Vadim
>
> v7:
>  * hmp: 'info numa': 'struct numa_node_mem' ->
>    'struct NumaNodeMem' (Eric);
>
>  * hmp: 'info numa': 'numa_node_mem.node_hotpluggable_mem' ->
>    'NumaNodeMem.node_plugged_mem' (in order to follow the same
>    naming schema as in the rest patches from this series);
>
>  * hmp: hmp_info_memory_size_summary() no longer
>    uses &error_abort (David);
>
>  * qmp: documented when @plugged-memory info is omitted (Eric);
>
>  * qmp: added example usage of @query-memory-size-summary (Eric);
>
>  * qmp: 'Since: 2.10.0' -> 'Since: 2.11.0' (Eric);
>
>  * All commit messages updated according to Eric's recomendation.
>
> v6:
>  * qmp: Renamed get_existing_hotpluggable_memory_size() ->
>    get_plugged_memory_size();
>
>  * qmp: Renamed MemoryInfo.hotunpluggable_memory ->
>    MemoryInfo.plugged_memory;
>
>  * qmp: Dropped superfluous parenthesis around the
>    comparison while evaluating MemoryInfo.has_plugged_memory.
>
>  * hmp: Renamed 'info memory-size-summary' ->
>    'info memory_size_summary'
>
> v5:
>  * hmp: Updated description and '.help' message for
>    'info memory-size-summary' command.
>
>  * hmp: Removed '-' characters from
>    'info memory-size-summary' output.
>
>  * Dropped ballooned memory information.
>
>  * get_existing_hotpluggable_memory_size() assumed
>    to never fail; routine now has no arguments and
>    returns uint64_t; in case if target does not support
>    memory hotplug, (uint64_t)-1 is returned.
>
>  * MemoryInfo structure:
>    * Removed @balloon-actual-memory field.
>    * Field @hotpluggable-memory renamed
>      to @hotunpluggable-memory.
>    * Updated description for fields.
>
>  * qmp: Updated description for
>    query-memory-size-summary.
>
>  * Patch v4 splitted into series.
>
> v4:
>  * Commands "info memory" and "query-memory" were renamed
>    to "info memory-size-summary" and "query-memory-size-summary"
>    correspondingly.
>  * Descriptions for both commands as well as MemoryInfo structure
>    fields were updated/renamed according to
>    http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg05972.html.
>  * In MemoryInfo structure following fields are now optional:
>    hotpluggable-memory and balloon-actual-memory.
>  * Field "hotpluggable-memory" now not displayed in HMP if target
>    has no CONFIG_MEM_HOTPLUG enabled.
>  * Field "balloon-actual-memory" now not displayed in HMP if
>    ballooning not enabled.
>  * qapi_free_MemoryInfo() used in order to free corresponding memory
>    instead of g_free().
>  * #ifdef CONFIG_MEM_HOTPLUG was removed and replaced with stubs/ approach.
>    get_exiting_hotpluggable_memory_size() function was introduced in
>    hw/mem/pc-dimm.c (available for all targets which have
> CONFIG_MEM_HOTPLUG
>    enabled). For other targets, there is a stub in stubs/qmp_pc_dimm.c.
>    In addition, stubs/qmp_pc_dimm_device_list.c was renamed to
>    stubs/qmp_pc_dimm.c in order to reflect actual source file content.
>  * Commit message was updated in order to reflect what was changed.
>
> v3:
>  * Use PRIu64 instead of 'lu' when printing results via HMP.
>  * Report zero hot-plugged memory instead of reporting error
>    when target architecture has no CONFIG_MEM_HOTPLUG enabled.
>
> v2:
>  * Fixed build for targets which do not have CONFIG_MEM_HOTPLUG
>    enabled.
>
>
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command Vadim Galitsyn
@ 2017-09-14  9:57   ` Igor Mammedov
  2017-09-14 10:26     ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: Igor Mammedov @ 2017-09-14  9:57 UTC (permalink / raw)
  To: Vadim Galitsyn
  Cc: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Eric Blake, qemu-devel, Vasilis Liaskovitis,
	Mohammed Gamal, Eduardo Otubo

On Tue, 29 Aug 2017 17:30:21 +0200
Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:

> Add a new query-memory-size-summary command which provides the
> following memory information in bytes:
> 
>   * base-memory - size of "base" memory specified with command line option -m.
> 
>   * plugged-memory - amount of memory that was hot-plugged.
>     If target does not have CONFIG_MEM_HOTPLUG enabled, no
>     value is reported.
> 
> Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
> Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
> Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
> Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
> Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
> Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: qemu-devel@nongnu.org
> ---
>  qapi-schema.json                                   | 32 ++++++++++++++++++++++
>  include/hw/mem/pc-dimm.h                           |  1 +
>  hw/mem/pc-dimm.c                                   |  5 ++++
>  qmp.c                                              | 13 +++++++++
>  stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} |  5 ++++
>  stubs/Makefile.objs                                |  2 +-
>  6 files changed, 57 insertions(+), 1 deletion(-)
>  rename stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} (68%)
> 
> diff --git a/qapi-schema.json b/qapi-schema.json
> index 802ea53d00..9402ac3b3a 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -4407,6 +4407,38 @@
>    'data': { 'name': 'str', '*migration-safe': 'bool', 'static': 'bool',
>              '*unavailable-features': [ 'str' ], 'typename': 'str' } }
>  
> +##
> +# @MemoryInfo:
> +#
> +# Actual memory information in bytes.
> +#
> +# @base-memory: size of "base" memory specified with command line
> +#               option -m.
> +#
> +# @plugged-memory: size memory that can be hot-unplugged. This field
> +#                  is omitted if target does support memory hotplug
> +#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build time).
field description doesn't match what's actually reported.
s/cat be/is/
s/does/doesn't/

> +#
> +# Since: 2.11.0
> +##
> +{ 'struct': 'MemoryInfo',
> +  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
> +
> +##
> +# @query-memory-size-summary:
> +#
> +# Return the amount of initially allocated and hot-plugged (if
> +# enabled) memory in bytes.
it could count dimm's on CLI, so not only hotplugged

s/hot-plugged/present hotpluggable/

> +#
> +# Example:
> +#
> +# -> { "execute": "query-memory-size-summary" }
> +# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
> +#
> +# Since: 2.11.0
> +##
> +{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
> +
>  ##
>  # @query-cpu-definitions:
>  #
> diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> index 6f8c3eb1b3..d83b957829 100644
> --- a/include/hw/mem/pc-dimm.h
> +++ b/include/hw/mem/pc-dimm.h
> @@ -95,6 +95,7 @@ int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp);
>  
>  int qmp_pc_dimm_device_list(Object *obj, void *opaque);
>  uint64_t pc_existing_dimms_capacity(Error **errp);
> +uint64_t get_plugged_memory_size(void);
>  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,
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index bdf6649083..66eace5a5c 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -159,6 +159,11 @@ uint64_t pc_existing_dimms_capacity(Error **errp)
>      return cap.size;
>  }
>  
> +uint64_t get_plugged_memory_size(void)
> +{
> +    return pc_existing_dimms_capacity(&error_abort);
> +}
> +
>  int qmp_pc_dimm_device_list(Object *obj, void *opaque)
>  {
>      MemoryDeviceInfoList ***prev = opaque;
> diff --git a/qmp.c b/qmp.c
> index b86201e349..e8c303116a 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -709,3 +709,16 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp)
>  
>      return head;
>  }
> +
> +MemoryInfo *qmp_query_memory_size_summary(Error **errp)
> +{
> +    MemoryInfo *mem_info = g_malloc0(sizeof(MemoryInfo));
> +
> +    mem_info->base_memory = ram_size;
> +
> +    mem_info->plugged_memory = get_plugged_memory_size();
> +    mem_info->has_plugged_memory =
> +        mem_info->plugged_memory != (uint64_t)-1;
> +
> +    return mem_info;
> +}
> diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm.c
> similarity index 68%
> rename from stubs/qmp_pc_dimm_device_list.c
> rename to stubs/qmp_pc_dimm.c
> index def211564d..9ddc4f619a 100644
> --- a/stubs/qmp_pc_dimm_device_list.c
> +++ b/stubs/qmp_pc_dimm.c
> @@ -6,3 +6,8 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
>  {
>     return 0;
>  }
> +
> +uint64_t get_plugged_memory_size(void)
> +{
> +    return (uint64_t)-1;
> +}
> diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> index e69c217aff..f5f139f310 100644
> --- a/stubs/Makefile.objs
> +++ b/stubs/Makefile.objs
> @@ -33,7 +33,7 @@ stub-obj-y += uuid.o
>  stub-obj-y += vm-stop.o
>  stub-obj-y += vmstate.o
>  stub-obj-$(CONFIG_WIN32) += fd-register.o
> -stub-obj-y += qmp_pc_dimm_device_list.o
> +stub-obj-y += qmp_pc_dimm.o
>  stub-obj-y += target-monitor-defs.o
>  stub-obj-y += target-get-monitor-def.o
>  stub-obj-y += pc_madt_cpu_entry.o

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command
  2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command Vadim Galitsyn
@ 2017-09-14 10:00   ` Igor Mammedov
  0 siblings, 0 replies; 13+ messages in thread
From: Igor Mammedov @ 2017-09-14 10:00 UTC (permalink / raw)
  To: Vadim Galitsyn
  Cc: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Eric Blake, qemu-devel, Vasilis Liaskovitis,
	Mohammed Gamal, Eduardo Otubo

On Tue, 29 Aug 2017 17:30:22 +0200
Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:

> Add 'info memory_size_summary' command which is a sibling
> of QMP command query-memory-size-summary. It provides the
> following memory information in bytes:
> 
>   * base-memory - size of "base" memory specified with command line option -m.
> 
>   * plugged-memory - amount of memory that was hot-plugged.
>     If target does not have CONFIG_MEM_HOTPLUG enabled, no
>     value is reported.
> 
> Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
> Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
> Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
> Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
> Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
> Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: qemu-devel@nongnu.org
> ---
>  hmp.h                |  1 +
>  hmp.c                | 18 ++++++++++++++++++
>  hmp-commands-info.hx | 16 ++++++++++++++++
>  3 files changed, 35 insertions(+)
> 
> diff --git a/hmp.h b/hmp.h
> index 1ff455295e..3605003e4c 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -145,5 +145,6 @@ void hmp_info_dump(Monitor *mon, const QDict *qdict);
>  void hmp_info_ramblock(Monitor *mon, const QDict *qdict);
>  void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict);
>  void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict);
> +void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict);
>  
>  #endif
> diff --git a/hmp.c b/hmp.c
> index fd80dce758..b718dab4df 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -2868,3 +2868,21 @@ void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict)
>      hmp_handle_error(mon, &err);
>      qapi_free_GuidInfo(info);
>  }
> +
> +void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict)
> +{
> +    Error *err = NULL;
> +    MemoryInfo *info = qmp_query_memory_size_summary(&err);
> +    if (info) {
> +        monitor_printf(mon, "base memory: %" PRIu64 "\n",
> +                       info->base_memory);
> +
> +        if (info->has_plugged_memory) {
> +            monitor_printf(mon, "plugged memory: %" PRIu64 "\n",
> +                           info->plugged_memory);
> +        }
> +
> +        qapi_free_MemoryInfo(info);
> +    }
> +    hmp_handle_error(mon, &err);
> +}
> diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
> index d9df238a5f..04c9db81f6 100644
> --- a/hmp-commands-info.hx
> +++ b/hmp-commands-info.hx
> @@ -849,6 +849,22 @@ ETEXI
>          .cmd = hmp_info_vm_generation_id,
>      },
>  
> +STEXI
> +@item info memory_size_summary
> +@findex memory_size_summary
> +Display the amount of initially allocated and hot-plugged (if
s/hot-plugged/present hotpluggable/

> +enabled) memory in bytes.
> +ETEXI
> +
> +    {
> +        .name       = "memory_size_summary",
> +        .args_type  = "",
> +        .params     = "",
> +        .help       = "show the amount of initially allocated and "
> +                      "hot-plugged (if enabled) memory in bytes.",
ditto

> +        .cmd        = hmp_info_memory_size_summary,
> +    },
> +
>  STEXI
>  @end table
>  ETEXI

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates
  2017-09-14  9:35 ` [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
@ 2017-09-14 10:02   ` Igor Mammedov
  2017-09-14 10:09     ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: Igor Mammedov @ 2017-09-14 10:02 UTC (permalink / raw)
  To: Vadim Galitsyn
  Cc: Eduardo Habkost, David Hildenbrand, Dr . David Alan Gilbert,
	Markus Armbruster, Eric Blake, qemu-devel

On Thu, 14 Sep 2017 11:35:36 +0200
Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:

> Hi Guys,
> 
> Could you please let me know if you have an update on this topic?
Series looks good to me.
so with comments I've made fixed up

Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> 
> Thank you,
> Vadim
> 
> On Tue, Aug 29, 2017 at 5:30 PM, Vadim Galitsyn <
> vadim.galitsyn@profitbricks.com> wrote:  
> 
> > Hi Guys,
> >
> > Sorry for the delay. This is continuation of
> >   http://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02937.html.
> >
> > I tried to update all the things according to your input
> > regarding to v6 series. I am attaching all the versions
> > history here in cover letter.
> >
> > Best regards,
> > Vadim
> >
> > v7:
> >  * hmp: 'info numa': 'struct numa_node_mem' ->
> >    'struct NumaNodeMem' (Eric);
> >
> >  * hmp: 'info numa': 'numa_node_mem.node_hotpluggable_mem' ->
> >    'NumaNodeMem.node_plugged_mem' (in order to follow the same
> >    naming schema as in the rest patches from this series);
> >
> >  * hmp: hmp_info_memory_size_summary() no longer
> >    uses &error_abort (David);
> >
> >  * qmp: documented when @plugged-memory info is omitted (Eric);
> >
> >  * qmp: added example usage of @query-memory-size-summary (Eric);
> >
> >  * qmp: 'Since: 2.10.0' -> 'Since: 2.11.0' (Eric);
> >
> >  * All commit messages updated according to Eric's recomendation.
> >
> > v6:
> >  * qmp: Renamed get_existing_hotpluggable_memory_size() ->
> >    get_plugged_memory_size();
> >
> >  * qmp: Renamed MemoryInfo.hotunpluggable_memory ->
> >    MemoryInfo.plugged_memory;
> >
> >  * qmp: Dropped superfluous parenthesis around the
> >    comparison while evaluating MemoryInfo.has_plugged_memory.
> >
> >  * hmp: Renamed 'info memory-size-summary' ->
> >    'info memory_size_summary'
> >
> > v5:
> >  * hmp: Updated description and '.help' message for
> >    'info memory-size-summary' command.
> >
> >  * hmp: Removed '-' characters from
> >    'info memory-size-summary' output.
> >
> >  * Dropped ballooned memory information.
> >
> >  * get_existing_hotpluggable_memory_size() assumed
> >    to never fail; routine now has no arguments and
> >    returns uint64_t; in case if target does not support
> >    memory hotplug, (uint64_t)-1 is returned.
> >
> >  * MemoryInfo structure:
> >    * Removed @balloon-actual-memory field.
> >    * Field @hotpluggable-memory renamed
> >      to @hotunpluggable-memory.
> >    * Updated description for fields.
> >
> >  * qmp: Updated description for
> >    query-memory-size-summary.
> >
> >  * Patch v4 splitted into series.
> >
> > v4:
> >  * Commands "info memory" and "query-memory" were renamed
> >    to "info memory-size-summary" and "query-memory-size-summary"
> >    correspondingly.
> >  * Descriptions for both commands as well as MemoryInfo structure
> >    fields were updated/renamed according to
> >    http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg05972.html.
> >  * In MemoryInfo structure following fields are now optional:
> >    hotpluggable-memory and balloon-actual-memory.
> >  * Field "hotpluggable-memory" now not displayed in HMP if target
> >    has no CONFIG_MEM_HOTPLUG enabled.
> >  * Field "balloon-actual-memory" now not displayed in HMP if
> >    ballooning not enabled.
> >  * qapi_free_MemoryInfo() used in order to free corresponding memory
> >    instead of g_free().
> >  * #ifdef CONFIG_MEM_HOTPLUG was removed and replaced with stubs/ approach.
> >    get_exiting_hotpluggable_memory_size() function was introduced in
> >    hw/mem/pc-dimm.c (available for all targets which have
> > CONFIG_MEM_HOTPLUG
> >    enabled). For other targets, there is a stub in stubs/qmp_pc_dimm.c.
> >    In addition, stubs/qmp_pc_dimm_device_list.c was renamed to
> >    stubs/qmp_pc_dimm.c in order to reflect actual source file content.
> >  * Commit message was updated in order to reflect what was changed.
> >
> > v3:
> >  * Use PRIu64 instead of 'lu' when printing results via HMP.
> >  * Report zero hot-plugged memory instead of reporting error
> >    when target architecture has no CONFIG_MEM_HOTPLUG enabled.
> >
> > v2:
> >  * Fixed build for targets which do not have CONFIG_MEM_HOTPLUG
> >    enabled.
> >
> >
> >  

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates
  2017-09-14 10:02   ` Igor Mammedov
@ 2017-09-14 10:09     ` Dr. David Alan Gilbert
  2017-09-14 10:25       ` Vadim Galitsyn
  0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2017-09-14 10:09 UTC (permalink / raw)
  To: Igor Mammedov
  Cc: Vadim Galitsyn, Eduardo Habkost, David Hildenbrand,
	Markus Armbruster, Eric Blake, qemu-devel

* Igor Mammedov (imammedo@redhat.com) wrote:
> On Thu, 14 Sep 2017 11:35:36 +0200
> Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:
> 
> > Hi Guys,
> > 
> > Could you please let me know if you have an update on this topic?
> Series looks good to me.
> so with comments I've made fixed up

OK, I can fix those comment comments up in a pull.

> Reviewed-by: Igor Mammedov <imammedo@redhat.com>

Thanks,

Dave

> 
> > 
> > Thank you,
> > Vadim
> > 
> > On Tue, Aug 29, 2017 at 5:30 PM, Vadim Galitsyn <
> > vadim.galitsyn@profitbricks.com> wrote:  
> > 
> > > Hi Guys,
> > >
> > > Sorry for the delay. This is continuation of
> > >   http://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02937.html.
> > >
> > > I tried to update all the things according to your input
> > > regarding to v6 series. I am attaching all the versions
> > > history here in cover letter.
> > >
> > > Best regards,
> > > Vadim
> > >
> > > v7:
> > >  * hmp: 'info numa': 'struct numa_node_mem' ->
> > >    'struct NumaNodeMem' (Eric);
> > >
> > >  * hmp: 'info numa': 'numa_node_mem.node_hotpluggable_mem' ->
> > >    'NumaNodeMem.node_plugged_mem' (in order to follow the same
> > >    naming schema as in the rest patches from this series);
> > >
> > >  * hmp: hmp_info_memory_size_summary() no longer
> > >    uses &error_abort (David);
> > >
> > >  * qmp: documented when @plugged-memory info is omitted (Eric);
> > >
> > >  * qmp: added example usage of @query-memory-size-summary (Eric);
> > >
> > >  * qmp: 'Since: 2.10.0' -> 'Since: 2.11.0' (Eric);
> > >
> > >  * All commit messages updated according to Eric's recomendation.
> > >
> > > v6:
> > >  * qmp: Renamed get_existing_hotpluggable_memory_size() ->
> > >    get_plugged_memory_size();
> > >
> > >  * qmp: Renamed MemoryInfo.hotunpluggable_memory ->
> > >    MemoryInfo.plugged_memory;
> > >
> > >  * qmp: Dropped superfluous parenthesis around the
> > >    comparison while evaluating MemoryInfo.has_plugged_memory.
> > >
> > >  * hmp: Renamed 'info memory-size-summary' ->
> > >    'info memory_size_summary'
> > >
> > > v5:
> > >  * hmp: Updated description and '.help' message for
> > >    'info memory-size-summary' command.
> > >
> > >  * hmp: Removed '-' characters from
> > >    'info memory-size-summary' output.
> > >
> > >  * Dropped ballooned memory information.
> > >
> > >  * get_existing_hotpluggable_memory_size() assumed
> > >    to never fail; routine now has no arguments and
> > >    returns uint64_t; in case if target does not support
> > >    memory hotplug, (uint64_t)-1 is returned.
> > >
> > >  * MemoryInfo structure:
> > >    * Removed @balloon-actual-memory field.
> > >    * Field @hotpluggable-memory renamed
> > >      to @hotunpluggable-memory.
> > >    * Updated description for fields.
> > >
> > >  * qmp: Updated description for
> > >    query-memory-size-summary.
> > >
> > >  * Patch v4 splitted into series.
> > >
> > > v4:
> > >  * Commands "info memory" and "query-memory" were renamed
> > >    to "info memory-size-summary" and "query-memory-size-summary"
> > >    correspondingly.
> > >  * Descriptions for both commands as well as MemoryInfo structure
> > >    fields were updated/renamed according to
> > >    http://lists.nongnu.org/archive/html/qemu-devel/2017-06/msg05972.html.
> > >  * In MemoryInfo structure following fields are now optional:
> > >    hotpluggable-memory and balloon-actual-memory.
> > >  * Field "hotpluggable-memory" now not displayed in HMP if target
> > >    has no CONFIG_MEM_HOTPLUG enabled.
> > >  * Field "balloon-actual-memory" now not displayed in HMP if
> > >    ballooning not enabled.
> > >  * qapi_free_MemoryInfo() used in order to free corresponding memory
> > >    instead of g_free().
> > >  * #ifdef CONFIG_MEM_HOTPLUG was removed and replaced with stubs/ approach.
> > >    get_exiting_hotpluggable_memory_size() function was introduced in
> > >    hw/mem/pc-dimm.c (available for all targets which have
> > > CONFIG_MEM_HOTPLUG
> > >    enabled). For other targets, there is a stub in stubs/qmp_pc_dimm.c.
> > >    In addition, stubs/qmp_pc_dimm_device_list.c was renamed to
> > >    stubs/qmp_pc_dimm.c in order to reflect actual source file content.
> > >  * Commit message was updated in order to reflect what was changed.
> > >
> > > v3:
> > >  * Use PRIu64 instead of 'lu' when printing results via HMP.
> > >  * Report zero hot-plugged memory instead of reporting error
> > >    when target architecture has no CONFIG_MEM_HOTPLUG enabled.
> > >
> > > v2:
> > >  * Fixed build for targets which do not have CONFIG_MEM_HOTPLUG
> > >    enabled.
> > >
> > >
> > >  
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates
  2017-09-14 10:09     ` Dr. David Alan Gilbert
@ 2017-09-14 10:25       ` Vadim Galitsyn
  0 siblings, 0 replies; 13+ messages in thread
From: Vadim Galitsyn @ 2017-09-14 10:25 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: Igor Mammedov, Eduardo Habkost, David Hildenbrand,
	Markus Armbruster, Eric Blake, qemu-devel

Igor, David,

Thank you!

Best regards,
Vadim

On Thu, Sep 14, 2017 at 12:09 PM, Dr. David Alan Gilbert <
dgilbert@redhat.com> wrote:

> * Igor Mammedov (imammedo@redhat.com) wrote:
> > On Thu, 14 Sep 2017 11:35:36 +0200
> > Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:
> >
> > > Hi Guys,
> > >
> > > Could you please let me know if you have an update on this topic?
> > Series looks good to me.
> > so with comments I've made fixed up
>
> OK, I can fix those comment comments up in a pull.
>
> > Reviewed-by: Igor Mammedov <imammedo@redhat.com>
>
> Thanks,
>
> Dave
>
> >
> > >
> > > Thank you,
> > > Vadim
> > >
> > > On Tue, Aug 29, 2017 at 5:30 PM, Vadim Galitsyn <
> > > vadim.galitsyn@profitbricks.com> wrote:
> > >
> > > > Hi Guys,
> > > >
> > > > Sorry for the delay. This is continuation of
> > > >   http://lists.nongnu.org/archive/html/qemu-devel/2017-
> 08/msg02937.html.
> > > >
> > > > I tried to update all the things according to your input
> > > > regarding to v6 series. I am attaching all the versions
> > > > history here in cover letter.
> > > >
> > > > Best regards,
> > > > Vadim
> > > >
> > > > v7:
> > > >  * hmp: 'info numa': 'struct numa_node_mem' ->
> > > >    'struct NumaNodeMem' (Eric);
> > > >
> > > >  * hmp: 'info numa': 'numa_node_mem.node_hotpluggable_mem' ->
> > > >    'NumaNodeMem.node_plugged_mem' (in order to follow the same
> > > >    naming schema as in the rest patches from this series);
> > > >
> > > >  * hmp: hmp_info_memory_size_summary() no longer
> > > >    uses &error_abort (David);
> > > >
> > > >  * qmp: documented when @plugged-memory info is omitted (Eric);
> > > >
> > > >  * qmp: added example usage of @query-memory-size-summary (Eric);
> > > >
> > > >  * qmp: 'Since: 2.10.0' -> 'Since: 2.11.0' (Eric);
> > > >
> > > >  * All commit messages updated according to Eric's recomendation.
> > > >
> > > > v6:
> > > >  * qmp: Renamed get_existing_hotpluggable_memory_size() ->
> > > >    get_plugged_memory_size();
> > > >
> > > >  * qmp: Renamed MemoryInfo.hotunpluggable_memory ->
> > > >    MemoryInfo.plugged_memory;
> > > >
> > > >  * qmp: Dropped superfluous parenthesis around the
> > > >    comparison while evaluating MemoryInfo.has_plugged_memory.
> > > >
> > > >  * hmp: Renamed 'info memory-size-summary' ->
> > > >    'info memory_size_summary'
> > > >
> > > > v5:
> > > >  * hmp: Updated description and '.help' message for
> > > >    'info memory-size-summary' command.
> > > >
> > > >  * hmp: Removed '-' characters from
> > > >    'info memory-size-summary' output.
> > > >
> > > >  * Dropped ballooned memory information.
> > > >
> > > >  * get_existing_hotpluggable_memory_size() assumed
> > > >    to never fail; routine now has no arguments and
> > > >    returns uint64_t; in case if target does not support
> > > >    memory hotplug, (uint64_t)-1 is returned.
> > > >
> > > >  * MemoryInfo structure:
> > > >    * Removed @balloon-actual-memory field.
> > > >    * Field @hotpluggable-memory renamed
> > > >      to @hotunpluggable-memory.
> > > >    * Updated description for fields.
> > > >
> > > >  * qmp: Updated description for
> > > >    query-memory-size-summary.
> > > >
> > > >  * Patch v4 splitted into series.
> > > >
> > > > v4:
> > > >  * Commands "info memory" and "query-memory" were renamed
> > > >    to "info memory-size-summary" and "query-memory-size-summary"
> > > >    correspondingly.
> > > >  * Descriptions for both commands as well as MemoryInfo structure
> > > >    fields were updated/renamed according to
> > > >    http://lists.nongnu.org/archive/html/qemu-devel/2017-
> 06/msg05972.html.
> > > >  * In MemoryInfo structure following fields are now optional:
> > > >    hotpluggable-memory and balloon-actual-memory.
> > > >  * Field "hotpluggable-memory" now not displayed in HMP if target
> > > >    has no CONFIG_MEM_HOTPLUG enabled.
> > > >  * Field "balloon-actual-memory" now not displayed in HMP if
> > > >    ballooning not enabled.
> > > >  * qapi_free_MemoryInfo() used in order to free corresponding memory
> > > >    instead of g_free().
> > > >  * #ifdef CONFIG_MEM_HOTPLUG was removed and replaced with stubs/
> approach.
> > > >    get_exiting_hotpluggable_memory_size() function was introduced in
> > > >    hw/mem/pc-dimm.c (available for all targets which have
> > > > CONFIG_MEM_HOTPLUG
> > > >    enabled). For other targets, there is a stub in
> stubs/qmp_pc_dimm.c.
> > > >    In addition, stubs/qmp_pc_dimm_device_list.c was renamed to
> > > >    stubs/qmp_pc_dimm.c in order to reflect actual source file
> content.
> > > >  * Commit message was updated in order to reflect what was changed.
> > > >
> > > > v3:
> > > >  * Use PRIu64 instead of 'lu' when printing results via HMP.
> > > >  * Report zero hot-plugged memory instead of reporting error
> > > >    when target architecture has no CONFIG_MEM_HOTPLUG enabled.
> > > >
> > > > v2:
> > > >  * Fixed build for targets which do not have CONFIG_MEM_HOTPLUG
> > > >    enabled.
> > > >
> > > >
> > > >
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command
  2017-09-14  9:57   ` Igor Mammedov
@ 2017-09-14 10:26     ` Dr. David Alan Gilbert
  2017-09-14 10:31       ` Vadim Galitsyn
  0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2017-09-14 10:26 UTC (permalink / raw)
  To: Igor Mammedov
  Cc: Vadim Galitsyn, Eduardo Habkost, David Hildenbrand,
	Markus Armbruster, Eric Blake, qemu-devel, Vasilis Liaskovitis,
	Mohammed Gamal, Eduardo Otubo

* Igor Mammedov (imammedo@redhat.com) wrote:
> On Tue, 29 Aug 2017 17:30:21 +0200
> Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:
> 
> > Add a new query-memory-size-summary command which provides the
> > following memory information in bytes:
> > 
> >   * base-memory - size of "base" memory specified with command line option -m.
> > 
> >   * plugged-memory - amount of memory that was hot-plugged.
> >     If target does not have CONFIG_MEM_HOTPLUG enabled, no
> >     value is reported.
> > 
> > Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@profitbricks.com>
> > Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
> > Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
> > Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
> > Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
> > Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > Cc: Markus Armbruster <armbru@redhat.com>
> > Cc: Igor Mammedov <imammedo@redhat.com>
> > Cc: Eric Blake <eblake@redhat.com>
> > Cc: qemu-devel@nongnu.org
> > ---
> >  qapi-schema.json                                   | 32 ++++++++++++++++++++++
> >  include/hw/mem/pc-dimm.h                           |  1 +
> >  hw/mem/pc-dimm.c                                   |  5 ++++
> >  qmp.c                                              | 13 +++++++++
> >  stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} |  5 ++++
> >  stubs/Makefile.objs                                |  2 +-
> >  6 files changed, 57 insertions(+), 1 deletion(-)
> >  rename stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} (68%)
> > 
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index 802ea53d00..9402ac3b3a 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -4407,6 +4407,38 @@
> >    'data': { 'name': 'str', '*migration-safe': 'bool', 'static': 'bool',
> >              '*unavailable-features': [ 'str' ], 'typename': 'str' } }
> >  
> > +##
> > +# @MemoryInfo:
> > +#
> > +# Actual memory information in bytes.
> > +#
> > +# @base-memory: size of "base" memory specified with command line
> > +#               option -m.
> > +#
> > +# @plugged-memory: size memory that can be hot-unplugged. This field
> > +#                  is omitted if target does support memory hotplug
> > +#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build time).
> field description doesn't match what's actually reported.
> s/cat be/is/

Are you sure about that? That would read:
      size memory that is hot-unplugged

which doesn't sound right, since it's not be hot-unplugged
yet.

Dave

> s/does/doesn't/
> 
> > +#
> > +# Since: 2.11.0
> > +##
> > +{ 'struct': 'MemoryInfo',
> > +  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
> > +
> > +##
> > +# @query-memory-size-summary:
> > +#
> > +# Return the amount of initially allocated and hot-plugged (if
> > +# enabled) memory in bytes.
> it could count dimm's on CLI, so not only hotplugged
> 
> s/hot-plugged/present hotpluggable/
> 
> > +#
> > +# Example:
> > +#
> > +# -> { "execute": "query-memory-size-summary" }
> > +# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
> > +#
> > +# Since: 2.11.0
> > +##
> > +{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
> > +
> >  ##
> >  # @query-cpu-definitions:
> >  #
> > diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> > index 6f8c3eb1b3..d83b957829 100644
> > --- a/include/hw/mem/pc-dimm.h
> > +++ b/include/hw/mem/pc-dimm.h
> > @@ -95,6 +95,7 @@ int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp);
> >  
> >  int qmp_pc_dimm_device_list(Object *obj, void *opaque);
> >  uint64_t pc_existing_dimms_capacity(Error **errp);
> > +uint64_t get_plugged_memory_size(void);
> >  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,
> > diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> > index bdf6649083..66eace5a5c 100644
> > --- a/hw/mem/pc-dimm.c
> > +++ b/hw/mem/pc-dimm.c
> > @@ -159,6 +159,11 @@ uint64_t pc_existing_dimms_capacity(Error **errp)
> >      return cap.size;
> >  }
> >  
> > +uint64_t get_plugged_memory_size(void)
> > +{
> > +    return pc_existing_dimms_capacity(&error_abort);
> > +}
> > +
> >  int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> >  {
> >      MemoryDeviceInfoList ***prev = opaque;
> > diff --git a/qmp.c b/qmp.c
> > index b86201e349..e8c303116a 100644
> > --- a/qmp.c
> > +++ b/qmp.c
> > @@ -709,3 +709,16 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp)
> >  
> >      return head;
> >  }
> > +
> > +MemoryInfo *qmp_query_memory_size_summary(Error **errp)
> > +{
> > +    MemoryInfo *mem_info = g_malloc0(sizeof(MemoryInfo));
> > +
> > +    mem_info->base_memory = ram_size;
> > +
> > +    mem_info->plugged_memory = get_plugged_memory_size();
> > +    mem_info->has_plugged_memory =
> > +        mem_info->plugged_memory != (uint64_t)-1;
> > +
> > +    return mem_info;
> > +}
> > diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm.c
> > similarity index 68%
> > rename from stubs/qmp_pc_dimm_device_list.c
> > rename to stubs/qmp_pc_dimm.c
> > index def211564d..9ddc4f619a 100644
> > --- a/stubs/qmp_pc_dimm_device_list.c
> > +++ b/stubs/qmp_pc_dimm.c
> > @@ -6,3 +6,8 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> >  {
> >     return 0;
> >  }
> > +
> > +uint64_t get_plugged_memory_size(void)
> > +{
> > +    return (uint64_t)-1;
> > +}
> > diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> > index e69c217aff..f5f139f310 100644
> > --- a/stubs/Makefile.objs
> > +++ b/stubs/Makefile.objs
> > @@ -33,7 +33,7 @@ stub-obj-y += uuid.o
> >  stub-obj-y += vm-stop.o
> >  stub-obj-y += vmstate.o
> >  stub-obj-$(CONFIG_WIN32) += fd-register.o
> > -stub-obj-y += qmp_pc_dimm_device_list.o
> > +stub-obj-y += qmp_pc_dimm.o
> >  stub-obj-y += target-monitor-defs.o
> >  stub-obj-y += target-get-monitor-def.o
> >  stub-obj-y += pc_madt_cpu_entry.o
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command
  2017-09-14 10:26     ` Dr. David Alan Gilbert
@ 2017-09-14 10:31       ` Vadim Galitsyn
  2017-09-14 11:06         ` Dr. David Alan Gilbert
  0 siblings, 1 reply; 13+ messages in thread
From: Vadim Galitsyn @ 2017-09-14 10:31 UTC (permalink / raw)
  To: Dr. David Alan Gilbert
  Cc: Igor Mammedov, Eduardo Habkost, David Hildenbrand,
	Markus Armbruster, Eric Blake, qemu-devel, Vasilis Liaskovitis,
	Mohammed Gamal, Eduardo Otubo

I think I made a typo here. It should be:

+# @plugged-memory: size *of* memory that can be hot-unplugged. This field
+#                  is omitted if target does *not* support memory hotplug
+#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build time).




On Thu, Sep 14, 2017 at 12:26 PM, Dr. David Alan Gilbert <
dgilbert@redhat.com> wrote:

> * Igor Mammedov (imammedo@redhat.com) wrote:
> > On Tue, 29 Aug 2017 17:30:21 +0200
> > Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:
> >
> > > Add a new query-memory-size-summary command which provides the
> > > following memory information in bytes:
> > >
> > >   * base-memory - size of "base" memory specified with command line
> option -m.
> > >
> > >   * plugged-memory - amount of memory that was hot-plugged.
> > >     If target does not have CONFIG_MEM_HOTPLUG enabled, no
> > >     value is reported.
> > >
> > > Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@
> profitbricks.com>
> > > Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
> > > Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
> > > Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
> > > Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
> > > Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > > Cc: Markus Armbruster <armbru@redhat.com>
> > > Cc: Igor Mammedov <imammedo@redhat.com>
> > > Cc: Eric Blake <eblake@redhat.com>
> > > Cc: qemu-devel@nongnu.org
> > > ---
> > >  qapi-schema.json                                   | 32
> ++++++++++++++++++++++
> > >  include/hw/mem/pc-dimm.h                           |  1 +
> > >  hw/mem/pc-dimm.c                                   |  5 ++++
> > >  qmp.c                                              | 13 +++++++++
> > >  stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} |  5 ++++
> > >  stubs/Makefile.objs                                |  2 +-
> > >  6 files changed, 57 insertions(+), 1 deletion(-)
> > >  rename stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} (68%)
> > >
> > > diff --git a/qapi-schema.json b/qapi-schema.json
> > > index 802ea53d00..9402ac3b3a 100644
> > > --- a/qapi-schema.json
> > > +++ b/qapi-schema.json
> > > @@ -4407,6 +4407,38 @@
> > >    'data': { 'name': 'str', '*migration-safe': 'bool', 'static':
> 'bool',
> > >              '*unavailable-features': [ 'str' ], 'typename': 'str' } }
> > >
> > > +##
> > > +# @MemoryInfo:
> > > +#
> > > +# Actual memory information in bytes.
> > > +#
> > > +# @base-memory: size of "base" memory specified with command line
> > > +#               option -m.
> > > +#
> > > +# @plugged-memory: size memory that can be hot-unplugged. This field
> > > +#                  is omitted if target does support memory hotplug
> > > +#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build
> time).
> > field description doesn't match what's actually reported.
> > s/cat be/is/
>
> Are you sure about that? That would read:
>       size memory that is hot-unplugged
>
> which doesn't sound right, since it's not be hot-unplugged
> yet.
>
> Dave
>
> > s/does/doesn't/
> >
> > > +#
> > > +# Since: 2.11.0
> > > +##
> > > +{ 'struct': 'MemoryInfo',
> > > +  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
> > > +
> > > +##
> > > +# @query-memory-size-summary:
> > > +#
> > > +# Return the amount of initially allocated and hot-plugged (if
> > > +# enabled) memory in bytes.
> > it could count dimm's on CLI, so not only hotplugged
> >
> > s/hot-plugged/present hotpluggable/
> >
> > > +#
> > > +# Example:
> > > +#
> > > +# -> { "execute": "query-memory-size-summary" }
> > > +# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
> > > +#
> > > +# Since: 2.11.0
> > > +##
> > > +{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
> > > +
> > >  ##
> > >  # @query-cpu-definitions:
> > >  #
> > > diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> > > index 6f8c3eb1b3..d83b957829 100644
> > > --- a/include/hw/mem/pc-dimm.h
> > > +++ b/include/hw/mem/pc-dimm.h
> > > @@ -95,6 +95,7 @@ int pc_dimm_get_free_slot(const int *hint, int
> max_slots, Error **errp);
> > >
> > >  int qmp_pc_dimm_device_list(Object *obj, void *opaque);
> > >  uint64_t pc_existing_dimms_capacity(Error **errp);
> > > +uint64_t get_plugged_memory_size(void);
> > >  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,
> > > diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> > > index bdf6649083..66eace5a5c 100644
> > > --- a/hw/mem/pc-dimm.c
> > > +++ b/hw/mem/pc-dimm.c
> > > @@ -159,6 +159,11 @@ uint64_t pc_existing_dimms_capacity(Error **errp)
> > >      return cap.size;
> > >  }
> > >
> > > +uint64_t get_plugged_memory_size(void)
> > > +{
> > > +    return pc_existing_dimms_capacity(&error_abort);
> > > +}
> > > +
> > >  int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> > >  {
> > >      MemoryDeviceInfoList ***prev = opaque;
> > > diff --git a/qmp.c b/qmp.c
> > > index b86201e349..e8c303116a 100644
> > > --- a/qmp.c
> > > +++ b/qmp.c
> > > @@ -709,3 +709,16 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error
> **errp)
> > >
> > >      return head;
> > >  }
> > > +
> > > +MemoryInfo *qmp_query_memory_size_summary(Error **errp)
> > > +{
> > > +    MemoryInfo *mem_info = g_malloc0(sizeof(MemoryInfo));
> > > +
> > > +    mem_info->base_memory = ram_size;
> > > +
> > > +    mem_info->plugged_memory = get_plugged_memory_size();
> > > +    mem_info->has_plugged_memory =
> > > +        mem_info->plugged_memory != (uint64_t)-1;
> > > +
> > > +    return mem_info;
> > > +}
> > > diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm.c
> > > similarity index 68%
> > > rename from stubs/qmp_pc_dimm_device_list.c
> > > rename to stubs/qmp_pc_dimm.c
> > > index def211564d..9ddc4f619a 100644
> > > --- a/stubs/qmp_pc_dimm_device_list.c
> > > +++ b/stubs/qmp_pc_dimm.c
> > > @@ -6,3 +6,8 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> > >  {
> > >     return 0;
> > >  }
> > > +
> > > +uint64_t get_plugged_memory_size(void)
> > > +{
> > > +    return (uint64_t)-1;
> > > +}
> > > diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> > > index e69c217aff..f5f139f310 100644
> > > --- a/stubs/Makefile.objs
> > > +++ b/stubs/Makefile.objs
> > > @@ -33,7 +33,7 @@ stub-obj-y += uuid.o
> > >  stub-obj-y += vm-stop.o
> > >  stub-obj-y += vmstate.o
> > >  stub-obj-$(CONFIG_WIN32) += fd-register.o
> > > -stub-obj-y += qmp_pc_dimm_device_list.o
> > > +stub-obj-y += qmp_pc_dimm.o
> > >  stub-obj-y += target-monitor-defs.o
> > >  stub-obj-y += target-get-monitor-def.o
> > >  stub-obj-y += pc_madt_cpu_entry.o
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command
  2017-09-14 10:31       ` Vadim Galitsyn
@ 2017-09-14 11:06         ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2017-09-14 11:06 UTC (permalink / raw)
  To: Vadim Galitsyn
  Cc: Igor Mammedov, Eduardo Habkost, David Hildenbrand,
	Markus Armbruster, Eric Blake, qemu-devel, Vasilis Liaskovitis,
	Mohammed Gamal, Eduardo Otubo

* Vadim Galitsyn (vadim.galitsyn@profitbricks.com) wrote:
> I think I made a typo here. It should be:
> 
> +# @plugged-memory: size *of* memory that can be hot-unplugged. This field
> +#                  is omitted if target does *not* support memory hotplug
> +#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build time).

'of' added, took the 'don't' from Igor's review.

Dave

> 
> 
> 
> On Thu, Sep 14, 2017 at 12:26 PM, Dr. David Alan Gilbert <
> dgilbert@redhat.com> wrote:
> 
> > * Igor Mammedov (imammedo@redhat.com) wrote:
> > > On Tue, 29 Aug 2017 17:30:21 +0200
> > > Vadim Galitsyn <vadim.galitsyn@profitbricks.com> wrote:
> > >
> > > > Add a new query-memory-size-summary command which provides the
> > > > following memory information in bytes:
> > > >
> > > >   * base-memory - size of "base" memory specified with command line
> > option -m.
> > > >
> > > >   * plugged-memory - amount of memory that was hot-plugged.
> > > >     If target does not have CONFIG_MEM_HOTPLUG enabled, no
> > > >     value is reported.
> > > >
> > > > Signed-off-by: Vasilis Liaskovitis <vasilis.liaskovitis@
> > profitbricks.com>
> > > > Signed-off-by: Mohammed Gamal <mohammed.gamal@profitbricks.com>
> > > > Signed-off-by: Eduardo Otubo <eduardo.otubo@profitbricks.com>
> > > > Signed-off-by: Vadim Galitsyn <vadim.galitsyn@profitbricks.com>
> > > > Reviewed-by: Eugene Crosser <evgenii.cherkashin@profitbricks.com>
> > > > Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > > > Cc: Markus Armbruster <armbru@redhat.com>
> > > > Cc: Igor Mammedov <imammedo@redhat.com>
> > > > Cc: Eric Blake <eblake@redhat.com>
> > > > Cc: qemu-devel@nongnu.org
> > > > ---
> > > >  qapi-schema.json                                   | 32
> > ++++++++++++++++++++++
> > > >  include/hw/mem/pc-dimm.h                           |  1 +
> > > >  hw/mem/pc-dimm.c                                   |  5 ++++
> > > >  qmp.c                                              | 13 +++++++++
> > > >  stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} |  5 ++++
> > > >  stubs/Makefile.objs                                |  2 +-
> > > >  6 files changed, 57 insertions(+), 1 deletion(-)
> > > >  rename stubs/{qmp_pc_dimm_device_list.c => qmp_pc_dimm.c} (68%)
> > > >
> > > > diff --git a/qapi-schema.json b/qapi-schema.json
> > > > index 802ea53d00..9402ac3b3a 100644
> > > > --- a/qapi-schema.json
> > > > +++ b/qapi-schema.json
> > > > @@ -4407,6 +4407,38 @@
> > > >    'data': { 'name': 'str', '*migration-safe': 'bool', 'static':
> > 'bool',
> > > >              '*unavailable-features': [ 'str' ], 'typename': 'str' } }
> > > >
> > > > +##
> > > > +# @MemoryInfo:
> > > > +#
> > > > +# Actual memory information in bytes.
> > > > +#
> > > > +# @base-memory: size of "base" memory specified with command line
> > > > +#               option -m.
> > > > +#
> > > > +# @plugged-memory: size memory that can be hot-unplugged. This field
> > > > +#                  is omitted if target does support memory hotplug
> > > > +#                  (i.e. CONFIG_MEM_HOTPLUG not defined on build
> > time).
> > > field description doesn't match what's actually reported.
> > > s/cat be/is/
> >
> > Are you sure about that? That would read:
> >       size memory that is hot-unplugged
> >
> > which doesn't sound right, since it's not be hot-unplugged
> > yet.
> >
> > Dave
> >
> > > s/does/doesn't/
> > >
> > > > +#
> > > > +# Since: 2.11.0
> > > > +##
> > > > +{ 'struct': 'MemoryInfo',
> > > > +  'data'  : { 'base-memory': 'size', '*plugged-memory': 'size' } }
> > > > +
> > > > +##
> > > > +# @query-memory-size-summary:
> > > > +#
> > > > +# Return the amount of initially allocated and hot-plugged (if
> > > > +# enabled) memory in bytes.
> > > it could count dimm's on CLI, so not only hotplugged
> > >
> > > s/hot-plugged/present hotpluggable/
> > >
> > > > +#
> > > > +# Example:
> > > > +#
> > > > +# -> { "execute": "query-memory-size-summary" }
> > > > +# <- { "return": { "base-memory": 4294967296, "plugged-memory": 0 } }
> > > > +#
> > > > +# Since: 2.11.0
> > > > +##
> > > > +{ 'command': 'query-memory-size-summary', 'returns': 'MemoryInfo' }
> > > > +
> > > >  ##
> > > >  # @query-cpu-definitions:
> > > >  #
> > > > diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
> > > > index 6f8c3eb1b3..d83b957829 100644
> > > > --- a/include/hw/mem/pc-dimm.h
> > > > +++ b/include/hw/mem/pc-dimm.h
> > > > @@ -95,6 +95,7 @@ int pc_dimm_get_free_slot(const int *hint, int
> > max_slots, Error **errp);
> > > >
> > > >  int qmp_pc_dimm_device_list(Object *obj, void *opaque);
> > > >  uint64_t pc_existing_dimms_capacity(Error **errp);
> > > > +uint64_t get_plugged_memory_size(void);
> > > >  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,
> > > > diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> > > > index bdf6649083..66eace5a5c 100644
> > > > --- a/hw/mem/pc-dimm.c
> > > > +++ b/hw/mem/pc-dimm.c
> > > > @@ -159,6 +159,11 @@ uint64_t pc_existing_dimms_capacity(Error **errp)
> > > >      return cap.size;
> > > >  }
> > > >
> > > > +uint64_t get_plugged_memory_size(void)
> > > > +{
> > > > +    return pc_existing_dimms_capacity(&error_abort);
> > > > +}
> > > > +
> > > >  int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> > > >  {
> > > >      MemoryDeviceInfoList ***prev = opaque;
> > > > diff --git a/qmp.c b/qmp.c
> > > > index b86201e349..e8c303116a 100644
> > > > --- a/qmp.c
> > > > +++ b/qmp.c
> > > > @@ -709,3 +709,16 @@ ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error
> > **errp)
> > > >
> > > >      return head;
> > > >  }
> > > > +
> > > > +MemoryInfo *qmp_query_memory_size_summary(Error **errp)
> > > > +{
> > > > +    MemoryInfo *mem_info = g_malloc0(sizeof(MemoryInfo));
> > > > +
> > > > +    mem_info->base_memory = ram_size;
> > > > +
> > > > +    mem_info->plugged_memory = get_plugged_memory_size();
> > > > +    mem_info->has_plugged_memory =
> > > > +        mem_info->plugged_memory != (uint64_t)-1;
> > > > +
> > > > +    return mem_info;
> > > > +}
> > > > diff --git a/stubs/qmp_pc_dimm_device_list.c b/stubs/qmp_pc_dimm.c
> > > > similarity index 68%
> > > > rename from stubs/qmp_pc_dimm_device_list.c
> > > > rename to stubs/qmp_pc_dimm.c
> > > > index def211564d..9ddc4f619a 100644
> > > > --- a/stubs/qmp_pc_dimm_device_list.c
> > > > +++ b/stubs/qmp_pc_dimm.c
> > > > @@ -6,3 +6,8 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque)
> > > >  {
> > > >     return 0;
> > > >  }
> > > > +
> > > > +uint64_t get_plugged_memory_size(void)
> > > > +{
> > > > +    return (uint64_t)-1;
> > > > +}
> > > > diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
> > > > index e69c217aff..f5f139f310 100644
> > > > --- a/stubs/Makefile.objs
> > > > +++ b/stubs/Makefile.objs
> > > > @@ -33,7 +33,7 @@ stub-obj-y += uuid.o
> > > >  stub-obj-y += vm-stop.o
> > > >  stub-obj-y += vmstate.o
> > > >  stub-obj-$(CONFIG_WIN32) += fd-register.o
> > > > -stub-obj-y += qmp_pc_dimm_device_list.o
> > > > +stub-obj-y += qmp_pc_dimm.o
> > > >  stub-obj-y += target-monitor-defs.o
> > > >  stub-obj-y += target-get-monitor-def.o
> > > >  stub-obj-y += pc_madt_cpu_entry.o
> > >
> > --
> > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> >
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-09-14 11:06 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-29 15:30 [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 1/3] hmp: extend "info numa" with hotplugged memory information Vadim Galitsyn
2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 2/3] qmp: introduce query-memory-size-summary command Vadim Galitsyn
2017-09-14  9:57   ` Igor Mammedov
2017-09-14 10:26     ` Dr. David Alan Gilbert
2017-09-14 10:31       ` Vadim Galitsyn
2017-09-14 11:06         ` Dr. David Alan Gilbert
2017-08-29 15:30 ` [Qemu-devel] [PATCH v7 3/3] hmp: introduce 'info memory_size_summary' command Vadim Galitsyn
2017-09-14 10:00   ` Igor Mammedov
2017-09-14  9:35 ` [Qemu-devel] [PATCH v7 0/3] hmp, qmp: 'info memory_size_summary', 'query-memory-size-summary', 'info numa' updates Vadim Galitsyn
2017-09-14 10:02   ` Igor Mammedov
2017-09-14 10:09     ` Dr. David Alan Gilbert
2017-09-14 10:25       ` Vadim Galitsyn

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.