[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 22/31] monitor: move x-query-profile into accel/tcg to fix build
From: |
Alex Bennée |
Subject: |
[PULL 22/31] monitor: move x-query-profile into accel/tcg to fix build |
Date: |
Wed, 12 Jan 2022 11:27:13 +0000 |
As --enable-profiler isn't defended in CI we missed this breakage.
Move the qmp handler into accel/tcg so we have access to the helpers
we need. While we are at it ensure we gate the feature on CONFIG_TCG.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Fixes: 37087fde0e ("qapi: introduce x-query-profile QMP command")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/773
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220105135009.1584676-23-alex.bennee@linaro.org>
diff --git a/qapi/machine.json b/qapi/machine.json
index b6a37e17c4..c87c81b803 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1503,6 +1503,7 @@
##
{ 'command': 'x-query-profile',
'returns': 'HumanReadableText',
+ 'if': 'CONFIG_TCG',
'features': [ 'unstable' ] }
##
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 409ec8c38c..8b4cd6c59d 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -1090,4 +1090,35 @@ HumanReadableText *qmp_x_query_opcount(Error **errp)
return human_readable_text_from_str(buf);
}
+#ifdef CONFIG_PROFILER
+
+int64_t dev_time;
+
+HumanReadableText *qmp_x_query_profile(Error **errp)
+{
+ g_autoptr(GString) buf = g_string_new("");
+ static int64_t last_cpu_exec_time;
+ int64_t cpu_exec_time;
+ int64_t delta;
+
+ cpu_exec_time = tcg_cpu_exec_time();
+ delta = cpu_exec_time - last_cpu_exec_time;
+
+ g_string_append_printf(buf, "async time %" PRId64 " (%0.3f)\n",
+ dev_time, dev_time /
(double)NANOSECONDS_PER_SECOND);
+ g_string_append_printf(buf, "qemu time %" PRId64 " (%0.3f)\n",
+ delta, delta / (double)NANOSECONDS_PER_SECOND);
+ last_cpu_exec_time = cpu_exec_time;
+ dev_time = 0;
+
+ return human_readable_text_from_str(buf);
+}
+#else
+HumanReadableText *qmp_x_query_profile(Error **errp)
+{
+ error_setg(errp, "Internal profiler not compiled");
+ return NULL;
+}
+#endif
+
#endif /* !CONFIG_USER_ONLY */
diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
index 14e3beeaaf..db4d186448 100644
--- a/monitor/qmp-cmds.c
+++ b/monitor/qmp-cmds.c
@@ -368,37 +368,6 @@ void qmp_display_reload(DisplayReloadOptions *arg, Error
**errp)
}
}
-#ifdef CONFIG_PROFILER
-
-int64_t dev_time;
-
-HumanReadableText *qmp_x_query_profile(Error **errp)
-{
- g_autoptr(GString) buf = g_string_new("");
- static int64_t last_cpu_exec_time;
- int64_t cpu_exec_time;
- int64_t delta;
-
- cpu_exec_time = tcg_cpu_exec_time();
- delta = cpu_exec_time - last_cpu_exec_time;
-
- g_string_append_printf(buf, "async time %" PRId64 " (%0.3f)\n",
- dev_time, dev_time /
(double)NANOSECONDS_PER_SECOND);
- g_string_append_printf(buf, "qemu time %" PRId64 " (%0.3f)\n",
- delta, delta / (double)NANOSECONDS_PER_SECOND);
- last_cpu_exec_time = cpu_exec_time;
- dev_time = 0;
-
- return human_readable_text_from_str(buf);
-}
-#else
-HumanReadableText *qmp_x_query_profile(Error **errp)
-{
- error_setg(errp, "Internal profiler not compiled");
- return NULL;
-}
-#endif
-
static int qmp_x_query_rdma_foreach(Object *obj, void *opaque)
{
RdmaProvider *rdma;
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
index 407a1da800..e90f20a107 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -358,6 +358,7 @@ SRST
Show host USB devices.
ERST
+#if defined(CONFIG_TCG)
{
.name = "profile",
.args_type = "",
@@ -365,6 +366,7 @@ ERST
.help = "show profiling information",
.cmd_info_hrt = qmp_x_query_profile,
},
+#endif
SRST
``info profile``
--
2.30.2
- [PULL 20/31] tests/docker: add libfuse3 development headers, (continued)
- [PULL 20/31] tests/docker: add libfuse3 development headers, Alex Bennée, 2022/01/12
- [PULL 06/31] tests/docker: switch fedora image to release 35, Alex Bennée, 2022/01/12
- [PULL 04/31] ui: avoid warnings about directdb on Alpine / musl libc, Alex Bennée, 2022/01/12
- [PULL 05/31] ci: explicitly skip I/O tests on alpine, Alex Bennée, 2022/01/12
- [PULL 14/31] .gitlab-ci.d/cirrus: auto-generate variables with lcitool, Alex Bennée, 2022/01/12
- [PULL 16/31] tests/docker: fix sorting of alpine image package lists, Alex Bennée, 2022/01/12
- [PULL 17/31] tests/docker: fully expand the alpine package list, Alex Bennée, 2022/01/12
- [PULL 15/31] tests/docker: updates to alpine package list, Alex Bennée, 2022/01/12
- [PULL 18/31] tests/docker: auto-generate alpine.docker with lcitool, Alex Bennée, 2022/01/12
- [PULL 21/31] hw/arm: add control knob to disable kaslr_seed via DTB, Alex Bennée, 2022/01/12
- [PULL 22/31] monitor: move x-query-profile into accel/tcg to fix build,
Alex Bennée <=
- [PULL 23/31] docs/devel: update C standard to C11, Alex Bennée, 2022/01/12
- [PULL 25/31] linux-user/elfload: add extra logging for hole finding, Alex Bennée, 2022/01/12
- [PULL 31/31] linux-user: Remove the deprecated ppc64abi32 target, Alex Bennée, 2022/01/12
- [PULL 11/31] tests/docker: auto-generate ubuntu2004.docker with lcitool, Alex Bennée, 2022/01/12
- [PULL 30/31] docker: include bison in debian-tricore-cross, Alex Bennée, 2022/01/12
- [PULL 19/31] tests/tcg: use CONFIG_LINUX_USER, not CONFIG_LINUX, Alex Bennée, 2022/01/12
- [PULL 26/31] linux-user: don't adjust base of found hole, Alex Bennée, 2022/01/12
- [PULL 29/31] FreeBSD: Upgrade to 12.3 release, Alex Bennée, 2022/01/12
- [PULL 28/31] test/tcg/ppc64le: Add float reference files, Alex Bennée, 2022/01/12
- [PULL 24/31] docs/devel: more documentation on the use of suffixes, Alex Bennée, 2022/01/12