From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: "Eduardo Habkost" <eduardo@habkost.net>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Eric Blake" <eblake@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH] monitor: move x-query-profile into accel/tcg to fix build
Date: Tue, 14 Dec 2021 18:41:34 +0000 [thread overview]
Message-ID: <YbjlXvoQHC4yuqdw@redhat.com> (raw)
In-Reply-To: <20211214182207.1416246-1-alex.bennee@linaro.org>
On Tue, Dec 14, 2021 at 06:22:07PM +0000, Alex Bennée wrote:
> 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
> ---
> qapi/machine.json | 1 +
> accel/tcg/cpu-exec.c | 31 +++++++++++++++++++++++++++++++
> monitor/qmp-cmds.c | 31 -------------------------------
> 3 files changed, 32 insertions(+), 31 deletions(-)
>
> diff --git a/qapi/machine.json b/qapi/machine.json
> index 067e3f5378..0c9f24a712 100644
> --- a/qapi/machine.json
> +++ b/qapi/machine.json
> @@ -1492,6 +1492,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..9498a16681 100644
> --- a/accel/tcg/cpu-exec.c
> +++ b/accel/tcg/cpu-exec.c
> @@ -1091,3 +1091,34 @@ HumanReadableText *qmp_x_query_opcount(Error **errp)
> }
>
> #endif /* !CONFIG_USER_ONLY */
I think this #endif probably needs to be after the qmp_x_query_profile
impl, as it is for the other TCG QMP cmds ?
> +
> +#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
> diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c
> index 343353e27a..be5e44c569 100644
> --- a/monitor/qmp-cmds.c
> +++ b/monitor/qmp-cmds.c
> @@ -355,37 +355,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;
> --
> 2.30.2
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
prev parent reply other threads:[~2021-12-14 18:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-14 18:22 [PATCH] monitor: move x-query-profile into accel/tcg to fix build Alex Bennée
2021-12-14 18:41 ` Daniel P. Berrangé [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YbjlXvoQHC4yuqdw@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.