* [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.