commit 6342cefc67f3b4dff3d3b0ac031e2d9513596d80
parent 725983359162c9cb3a273fe375fe79bfadf80d2c
Author: Louis Burda <quent.burda@gmail.com>
Date: Fri, 3 Feb 2023 12:08:21 -0600
Simplify target gfn stepping by tracking a single page
Diffstat:
1 file changed, 3 insertions(+), 18 deletions(-)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
@@ -3979,7 +3979,8 @@ static bool page_fault_handle_page_track(struct kvm_vcpu *vcpu,
&& inst_fetch && fault->gfn == cpc_track_steps.target_gfn) {
CPC_INFO("Entering target gfn for stepping\n");
cpc_track_steps.stepping = true;
- cpc_untrack_all(vcpu, KVM_PAGE_TRACK_EXEC);
+ cpc_untrack_single(vcpu, fault->gfn,
+ KVM_PAGE_TRACK_EXEC);
if (cpc_track_steps.with_data) {
cpc_track_all(vcpu, KVM_PAGE_TRACK_ACCESS);
cpc_untrack_single(vcpu, fault->gfn,
@@ -3998,13 +3999,10 @@ static bool page_fault_handle_page_track(struct kvm_vcpu *vcpu,
} else {
cpc_untrack_all(vcpu, KVM_PAGE_TRACK_EXEC);
}
- cpc_track_all(vcpu, KVM_PAGE_TRACK_EXEC);
- cpc_untrack_single(vcpu, fault->gfn,
+ cpc_track_single(vcpu, cpc_track_steps.target_gfn,
KVM_PAGE_TRACK_EXEC);
cpc_singlestep = false;
cpc_prime_probe = false;
- cpc_track_steps.prev_avail = false;
- cpc_track_steps.cur_avail = false;
}
if (cpc_track_steps.stepping) {
@@ -4017,19 +4015,6 @@ static bool page_fault_handle_page_track(struct kvm_vcpu *vcpu,
cpc_singlestep_reset = true;
if (cpc_track_steps.with_data)
cpc_prime_probe = true;
- } else {
- if (cpc_track_steps.prev_avail) {
- cpc_track_single(vcpu,
- cpc_track_steps.prev_gfn, modes[i]);
- }
-
- if (cpc_track_steps.cur_avail) {
- cpc_track_steps.prev_gfn = cpc_track_steps.cur_gfn;
- cpc_track_steps.prev_avail = true;
- }
-
- cpc_track_steps.cur_gfn = fault->gfn;
- cpc_track_steps.cur_avail = true;
}
break;