[PATCH] perf kvm: Fix RISC-V VM-exit duration accounting
lirongqing
lirongqing at baidu.com
Mon Nov 2 01:18:09 PST 2026
From: Li RongQing <lirongqing at baidu.com>
Use kvm_exit as the start event and the following kvm_entry as the
end event for RISC-V VM-exit statistics. Keep decoding scause from
the exit sample.
Before this change, RISC-V measured guest runtime as VM-exit time.
Fixes: da7b1b525e97 ("perf kvm/riscv: Port perf kvm stat to RISC-V")
Signed-off-by: Li RongQing <lirongqing at baidu.com>
---
tools/perf/util/kvm-stat-arch/kvm-stat-riscv.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tools/perf/util/kvm-stat-arch/kvm-stat-riscv.c b/tools/perf/util/kvm-stat-arch/kvm-stat-riscv.c
index 967bba2..09c9c7d 100644
--- a/tools/perf/util/kvm-stat-arch/kvm-stat-riscv.c
+++ b/tools/perf/util/kvm-stat-arch/kvm-stat-riscv.c
@@ -31,13 +31,7 @@ static void event_get_key(struct perf_sample *sample,
}
static bool event_begin(struct perf_sample *sample,
- struct event_key *key __maybe_unused)
-{
- return evsel__name_is(sample->evsel, kvm_entry_trace(EM_RISCV));
-}
-
-static bool event_end(struct perf_sample *sample,
- struct event_key *key)
+ struct event_key *key)
{
if (evsel__name_is(sample->evsel, kvm_exit_trace(EM_RISCV))) {
event_get_key(sample, key);
@@ -46,6 +40,12 @@ static bool event_end(struct perf_sample *sample,
return false;
}
+static bool event_end(struct perf_sample *sample,
+ struct event_key *key __maybe_unused)
+{
+ return evsel__name_is(sample->evsel, kvm_entry_trace(EM_RISCV));
+}
+
static const struct kvm_events_ops exit_events = {
.is_begin_event = event_begin,
.is_end_event = event_end,
--
2.9.4
More information about the linux-riscv
mailing list