[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 51/53] qapi: introduce x-query-tlb QMP command
From: |
Daniel P . Berrangé |
Subject: |
[PATCH v2 51/53] qapi: introduce x-query-tlb QMP command |
Date: |
Tue, 14 Sep 2021 15:20:40 +0100 |
This is a counterpart to the HMP "info tlb" command. It is being
added with an "x-" prefix because this QMP command is intended as an
ad hoc debugging tool and will thus not be modelled in QAPI as fully
structured data, nor will it have long term guaranteed stability.
The existing HMP command is rewritten to call the QMP command.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
hw/core/machine-qmp-cmds.c | 22 ++++++++++++++++++++++
monitor/misc.c | 15 ++++++++++-----
qapi/machine.json | 15 +++++++++++++++
3 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
index 4407e967da..c84cef8667 100644
--- a/hw/core/machine-qmp-cmds.c
+++ b/hw/core/machine-qmp-cmds.c
@@ -235,6 +235,28 @@ HumanReadableText *qmp_x_query_registers(bool has_cpu,
int64_t cpu,
return ret;
}
+HumanReadableText *qmp_x_query_tlb(int64_t cpu, Error **errp)
+{
+ HumanReadableText *ret;
+ g_autoptr(GString) buf = g_string_new("");
+ CPUState *cs = NULL, *tmp;
+
+ CPU_FOREACH(tmp) {
+ if (cpu == tmp->cpu_index) {
+ cs = tmp;
+ }
+ }
+ if (!cs) {
+ error_setg(errp, "CPU %"PRId64" not available", cpu);
+ return NULL;
+ }
+ cpu_format_tlb(cs, buf);
+
+ ret = g_new0(HumanReadableText, 1);
+ ret->human_readable_text = g_steal_pointer(&buf->str);
+ return ret;
+}
+
HumanReadableText *qmp_x_query_numa(Error **errp)
{
HumanReadableText *ret;
diff --git a/monitor/misc.c b/monitor/misc.c
index c7d138914d..7ca529002d 100644
--- a/monitor/misc.c
+++ b/monitor/misc.c
@@ -938,17 +938,22 @@ static void hmp_info_mtree(Monitor *mon, const QDict
*qdict)
static void hmp_info_tlb(Monitor *mon, const QDict *qdict)
{
- g_autoptr(GString) buf = g_string_new("");
- CPUState *cpu = mon_get_cpu(mon);
+ CPUState *cs = mon_get_cpu(mon);
+ Error *err = NULL;
+ g_autoptr(HumanReadableText) info = NULL;
- if (!cpu) {
+ if (!cs) {
monitor_printf(mon, "No CPU available\n");
return;
}
- cpu_format_tlb(cpu, buf);
+ info = qmp_x_query_tlb(cs->cpu_index, &err);
+ if (err) {
+ error_report_err(err);
+ return;
+ }
- monitor_printf(mon, "%s", buf->str);
+ monitor_printf(mon, "%s", info->human_readable_text);
}
static void hmp_info_profile(Monitor *mon, const QDict *qdict)
diff --git a/qapi/machine.json b/qapi/machine.json
index e72b47ea7d..0f537a58e0 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1400,6 +1400,21 @@
{ 'command': 'x-query-roms',
'returns': 'HumanReadableText' }
+##
+# @x-query-tlb:
+#
+# @cpu: the CPU number to query
+#
+# Return information on the CPU memory mappings
+#
+# Returns: memory mappings in an architecture-specific format
+#
+# Since: 6.2
+##
+{ 'command': 'x-query-tlb',
+ 'data': {'cpu': 'int' },
+ 'returns': 'HumanReadableText' }
+
##
# @x-query-usb:
#
--
2.31.1
- [PATCH v2 45/53] target/nios2: convert to use format_tlb callback, (continued)
- [PATCH v2 45/53] target/nios2: convert to use format_tlb callback, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 46/53] target/ppc: convert to use format_tlb callback, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 47/53] target/sh4: convert to use format_tlb callback, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 48/53] target/sparc: convert to use format_tlb callback, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 49/53] target/xtensa: convert to use format_tlb callback, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 50/53] monitor: merge duplicate "info tlb" handlers, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 51/53] qapi: introduce x-query-tlb QMP command,
Daniel P . Berrangé <=
- [PATCH v2 52/53] qapi: introduce x-query-jit QMP command, Daniel P . Berrangé, 2021/09/14
- [PATCH v2 53/53] qapi: introduce x-query-opcount QMP command, Daniel P . Berrangé, 2021/09/14