diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-11-16 16:03:04 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-11-16 16:03:40 +0100 |
| commit | afe49b52f6b2ac52efe8e610e64ee07c7c2efef4 (patch) | |
| tree | 56a5f2a95b25843947b207e72e6890b09d52b937 /test/sevstep.c | |
| parent | 10d3c8f52dc2c0f498e81946bef8292424fcd1ce (diff) | |
| download | cachepc-afe49b52f6b2ac52efe8e610e64ee07c7c2efef4.tar.gz cachepc-afe49b52f6b2ac52efe8e610e64ee07c7c2efef4.zip | |
APIC single stepping working
Diffstat (limited to 'test/sevstep.c')
| -rw-r--r-- | test/sevstep.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/test/sevstep.c b/test/sevstep.c index 252bdcb..3307245 100644 --- a/test/sevstep.c +++ b/test/sevstep.c @@ -480,6 +480,7 @@ runonce(struct kvm *kvm) int monitor(struct kvm *kvm, bool baseline) { + static uint64_t rip_prev = 1; struct cpc_track_event event; cpc_msrmt_t counts[64]; uint64_t rip; @@ -488,20 +489,17 @@ monitor(struct kvm *kvm, bool baseline) /* Get page fault info */ ret = ioctl(kvm_dev, KVM_CPC_POLL_EVENT, &event); if (!ret) { - if (!baseline) { - rip = sev_dbg_rip(kvm->vmfd); - printf("Event: inst:%llu data:%llu retired:%llu rip:%lu\n", - event.inst_fault_gfn, event.data_fault_gfn, - event.retinst, rip); - } - faultcnt++; - ret = ioctl(kvm_dev, KVM_CPC_READ_COUNTS, counts); if (ret == -1) err(1, "ioctl READ_COUNTS"); - if (!baseline) { + rip = sev_dbg_rip(kvm->vmfd); + if (!baseline && rip != rip_prev) { + printf("Event: inst:%llu data:%llu retired:%llu rip:%lu\n", + event.inst_fault_gfn, event.data_fault_gfn, + event.retinst, rip); print_counts(counts); printf("\n"); + rip_prev = rip; } for (i = 0; i < 64; i++) { @@ -513,6 +511,8 @@ monitor(struct kvm *kvm, bool baseline) ret = ioctl(kvm_dev, KVM_CPC_ACK_EVENT, &event.id); if (ret == -1) err(1, "ioctl ACK_EVENT"); + + faultcnt++; } else if (errno != EAGAIN) { perror("ioctl POLL_EVENT"); return 1; @@ -589,7 +589,7 @@ main(int argc, const char **argv) if (ret == -1) err(1, "ioctl MEASURE_BASELINE"); faultcnt = 0; - while (faultcnt < 30) { + while (faultcnt < 50) { if (monitor(&kvm_with_access, true)) break; } @@ -626,7 +626,7 @@ main(int argc, const char **argv) if (ret == -1) err(1, "ioctl ACK_EVENT"); faultcnt = 0; - while (faultcnt < 30) { + while (faultcnt < 50) { if (monitor(&kvm_with_access, false)) break; } |
