@@ -3635,6 +3635,7 @@ if have_system
trace_events_subdirs += [
'accel/hvf',
'accel/kvm',
+ 'accel/split',
'audio',
'backends',
'backends/tpm',
new file mode 100644
@@ -0,0 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#include "trace/trace-accel_split.h"
@@ -17,6 +17,7 @@
#include "system/hw_accel.h"
#include "system/tcg.h"
#include "split-accel.h"
+#include "trace.h"
#include "accel/accel-internal.h"
#include "accel/tcg/tcg-accel-ops-mttcg.h"
@@ -64,13 +65,18 @@ static void *split_cpu_thread_routine(void *arg)
if (cpu_can_run(cpu)) {
if (acs->use_hw) {
r = hwops->exec_vcpu_thread(cpu);
+ trace_accel_split_exec_vcpu_thread_hw(r);
} else {
r = swops->exec_vcpu_thread(cpu);
+ trace_accel_split_exec_vcpu_thread_sw(r);
}
switch (r) {
case 0:
if (acs->use_hw) {
acs->use_hw = cpu_acceleratable(cpu);
+ if (!acs->use_hw) {
+ trace_accel_split_sw_emulate();
+ }
}
break;
case EXCP_INTERRUPT:
@@ -95,6 +101,7 @@ static void *split_cpu_thread_routine(void *arg)
break;
case EXCP_HWACCEL:
assert(!acs->use_hw);
+ trace_accel_split_hw_accelerate();
acs->use_hw = true;
break;
default:
new file mode 100644
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# See docs/devel/tracing.rst for syntax documentation.
+
+# split-accel-ops.c
+accel_split_exec_vcpu_thread_sw(int retval) "sw: rv:0x%x"
+accel_split_exec_vcpu_thread_hw(int retval) "hw: rv:0x%x"
+accel_split_hw_accelerate(void) ""
+accel_split_sw_emulate(void) ""
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- meson.build | 1 + accel/split/trace.h | 2 ++ accel/split/split-accel-ops.c | 7 +++++++ accel/split/trace-events | 9 +++++++++ 4 files changed, 19 insertions(+) create mode 100644 accel/split/trace.h create mode 100644 accel/split/trace-events