diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-02-03 12:08:28 -0600 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-02-03 12:08:28 -0600 |
| commit | 0d4f62bcc065026390dd1f19b0bb462d07dcf9ff (patch) | |
| tree | ebf4b2d751a8c91c137f611cf1033b804382e448 | |
| parent | 1715c9d6e1aa977b407081fb3164edbf1534fb5c (diff) | |
| download | cachepc-0d4f62bcc065026390dd1f19b0bb462d07dcf9ff.tar.gz cachepc-0d4f62bcc065026390dd1f19b0bb462d07dcf9ff.zip | |
Simplify target gfn stepping by tracking a single page
| -rw-r--r-- | cachepc/cachepc.h | 10 | ||||
| -rw-r--r-- | cachepc/kvm.c | 3 | ||||
| m--------- | linux | 0 |
3 files changed, 2 insertions, 11 deletions
diff --git a/cachepc/cachepc.h b/cachepc/cachepc.h index 5b4308f..f44b169 100644 --- a/cachepc/cachepc.h +++ b/cachepc/cachepc.h @@ -60,16 +60,6 @@ struct cpc_track_steps { uint64_t target_gfn; bool stepping; bool use_filter; - - /* simplified page tracking without singlestep resolve, since we - * only care about when we reach the target page, not accuracy.. - * in contrast to page_track, we keep two pages tracked at all times - * this helps prevent it looking like a A is tracked after B - * when in reality we just untracked A too early on a A -> B boundary */ - bool prev_avail; - uint64_t prev_gfn; - bool cur_avail; - uint64_t cur_gfn; }; static_assert(sizeof(struct cpc_cl) == L1_LINESIZE, "Bad cacheline struct"); diff --git a/cachepc/kvm.c b/cachepc/kvm.c index 9c17498..11a18d2 100644 --- a/cachepc/kvm.c +++ b/cachepc/kvm.c @@ -525,7 +525,8 @@ cpc_track_mode_ioctl(void __user *arg_user) cpc_singlestep_reset = true; cpc_track_steps.stepping = true; } else { - cpc_track_all(vcpu, KVM_PAGE_TRACK_EXEC); + cpc_track_single(vcpu, cpc_track_steps.target_gfn, + KVM_PAGE_TRACK_EXEC); cpc_track_steps.stepping = false; } break; diff --git a/linux b/linux -Subproject 725983359162c9cb3a273fe375fe79bfadf80d2 +Subproject 6342cefc67f3b4dff3d3b0ac031e2d9513596d8 |
