From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 15/17] accel/hvf: Implement AccelClass::get_vcpu_stats() handler
Date: Tue, 15 Jul 2025 21:45:14 +0200 [thread overview]
Message-ID: <20250715194516.91722-16-philmd@linaro.org> (raw)
In-Reply-To: <20250715194516.91722-1-philmd@linaro.org>
Co-developed-by: Mads Ynddal <mads@ynddal.dk>
Signed-off-by: Mads Ynddal <mads@ynddal.dk>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250715104015.72663-8-philmd@linaro.org>
---
accel/hvf/hvf-accel-ops.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
index 214454bd0b4..d488d6afbac 100644
--- a/accel/hvf/hvf-accel-ops.c
+++ b/accel/hvf/hvf-accel-ops.c
@@ -58,6 +58,7 @@
#include "system/cpus.h"
#include "system/hvf.h"
#include "system/hvf_int.h"
+#include <mach/mach_time.h>
HVFState *hvf_state;
@@ -118,6 +119,12 @@ static void dummy_signal(int sig)
{
}
+static void do_hvf_get_vcpu_exec_time(CPUState *cpu, run_on_cpu_data arg)
+{
+ int r = hv_vcpu_get_exec_time(cpu->accel->fd, arg.host_ptr);
+ assert_hvf_ok(r);
+}
+
static void hvf_vcpu_destroy(CPUState *cpu)
{
hv_return_t ret = hv_vcpu_destroy(cpu->accel->fd);
@@ -347,6 +354,21 @@ static void hvf_remove_all_breakpoints(CPUState *cpu)
}
}
+static void hvf_get_vcpu_stats(CPUState *cpu, GString *buf)
+{
+ uint64_t time_mach; /* units of mach_absolute_time() */
+
+ run_on_cpu(cpu, do_hvf_get_vcpu_exec_time, RUN_ON_CPU_HOST_PTR(&time_mach));
+
+ mach_timebase_info_data_t timebase;
+ mach_timebase_info(&timebase);
+ uint64_t time_ns = time_mach * timebase.numer / timebase.denom;
+
+ g_string_append_printf(buf, "HVF cumulative execution time: %llu.%.3llus\n",
+ time_ns / 1000000000,
+ (time_ns % 1000000000) / 1000000);
+}
+
static void hvf_accel_ops_class_init(ObjectClass *oc, const void *data)
{
AccelOpsClass *ops = ACCEL_OPS_CLASS(oc);
@@ -365,7 +387,10 @@ static void hvf_accel_ops_class_init(ObjectClass *oc, const void *data)
ops->remove_all_breakpoints = hvf_remove_all_breakpoints;
ops->update_guest_debug = hvf_update_guest_debug;
ops->supports_guest_debug = hvf_arch_supports_guest_debug;
+
+ ops->get_vcpu_stats = hvf_get_vcpu_stats;
};
+
static const TypeInfo hvf_accel_ops_type = {
.name = ACCEL_OPS_NAME("hvf"),
--
2.49.0
next prev parent reply other threads:[~2025-07-15 20:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-15 19:44 [PULL 00/17] Accelerators patches for 2025-07-15 Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 01/17] hw/xen/arch_hvm: Unify x86 and ARM variants Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 02/17] hw/arm/xen-pvh: Remove unnecessary 'hw/xen/arch_hvm.h' header Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 03/17] qapi/accel: Move definitions related to accelerators in their own file Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 04/17] qapi/machine: Add @qom-type field to CpuInfoFast structure Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 05/17] hw/core/machine: Display CPU model name in 'info cpus' command Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 06/17] accel/tcg: Do not dump NaN statistics Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 07/17] accel: Rename 'system/accel-ops.h' -> 'accel/accel-cpu-ops.h' Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 08/17] accel: Extract AccelClass definition to 'accel/accel-ops.h' Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 09/17] Revert "accel/tcg: Unregister the RCU before exiting RR thread" Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 10/17] accel/tcg: Extract statistic related code to tcg-stats.c Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 11/17] accel/system: Introduce @x-accel-stats QMP command Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 12/17] accel/system: Add 'info accel' on human monitor Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 13/17] accel/tcg: Propagate AccelState to dump_accel_info() Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 14/17] accel/tcg: Implement AccelClass::get_stats() handler Philippe Mathieu-Daudé
2025-07-15 19:45 ` Philippe Mathieu-Daudé [this message]
2025-07-15 19:45 ` [PULL 16/17] system/runstate: Document qemu_add_vm_change_state_handler() Philippe Mathieu-Daudé
2025-07-15 19:45 ` [PULL 17/17] system/runstate: Document qemu_add_vm_change_state_handler_prio* in hdr Philippe Mathieu-Daudé
2025-07-16 12:41 ` [PULL 00/17] Accelerators patches for 2025-07-15 Stefan Hajnoczi
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=20250715194516.91722-16-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).