diff --git a/arch/arm64/kvm/hyp/nvhe/trace.c b/arch/arm64/kvm/hyp/nvhe/trace.c index e643929958c2..e77bda5fa6e0 100644 --- a/arch/arm64/kvm/hyp/nvhe/trace.c +++ b/arch/arm64/kvm/hyp/nvhe/trace.c @@ -339,6 +339,11 @@ static int rb_cpu_reset(struct hyp_rb_per_cpu *cpu_buffer) prev_status = rb_cpu_disable_writing(cpu_buffer); + if (!rb_set_head_page(cpu_buffer)) + return -ENODEV; + + cpu_buffer->tail_page = cpu_buffer->head_page; + bpage = cpu_buffer->head_page; do { rb_page_reset(bpage); @@ -347,6 +352,9 @@ static int rb_cpu_reset(struct hyp_rb_per_cpu *cpu_buffer) rb_page_reset(cpu_buffer->reader_page); + cpu_buffer->last_overrun = 0; + cpu_buffer->write_stamp = 0; + cpu_buffer->meta->reader.read = 0; cpu_buffer->meta->reader.lost_events = 0; cpu_buffer->meta->entries = 0; diff --git a/tools/testing/selftests/hyp-trace/hyp-trace-test b/tools/testing/selftests/hyp-trace/hyp-trace-test index 868eb81bfb77..4e57dd5a4164 100755 --- a/tools/testing/selftests/hyp-trace/hyp-trace-test +++ b/tools/testing/selftests/hyp-trace/hyp-trace-test @@ -208,8 +208,9 @@ test_reset() echo "Test Reset..." setup_hyp_trace - write_events 5 + write_events 1000 echo 0 > trace + clock_before=$(host_clock) write_events 5 pid=$(consuming_read $tmp) @@ -217,7 +218,7 @@ test_reset() stop_hyp_trace kill $pid - validate_test $tmp 5 0 $(host_clock) + validate_test $tmp 5 $clock_before $(host_clock) rm $tmp