diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-10-05 17:49:06 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-10-05 17:49:06 +0200 |
| commit | dd1e29c4828b01b477a003679234097434f800d4 (patch) | |
| tree | 6f32268da9a5fdea53fcb962357f8d6718b81744 /sevstep/mmu.c | |
| parent | b66fb6b2cdf003de4b580002fdeeacdb93a6bf75 (diff) | |
| download | cachepc-dd1e29c4828b01b477a003679234097434f800d4.tar.gz cachepc-dd1e29c4828b01b477a003679234097434f800d4.zip | |
More minor refactors
Diffstat (limited to 'sevstep/mmu.c')
| -rw-r--r-- | sevstep/mmu.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/sevstep/mmu.c b/sevstep/mmu.c index c08e2f9..0ebdd83 100644 --- a/sevstep/mmu.c +++ b/sevstep/mmu.c @@ -52,9 +52,10 @@ sevstep_uspt_page_fault_handle(struct kvm_vcpu *vcpu, bool sevstep_spte_protect(u64 *sptep, bool pt_protect, enum kvm_page_track_mode mode) { - u64 spte = *sptep; - bool shouldFlush = false; + u64 spte; + bool flush; + spte = *sptep; if (!is_writable_pte(spte) && !(pt_protect && is_mmu_writable_spte(spte))) return false; @@ -63,9 +64,10 @@ sevstep_spte_protect(u64 *sptep, bool pt_protect, enum kvm_page_track_mode mode) if (pt_protect) spte &= ~EPT_SPTE_MMU_WRITABLE; + flush = false; if (mode == KVM_PAGE_TRACK_WRITE) { spte = spte & ~PT_WRITABLE_MASK; - shouldFlush = true; + flush = true; } else if (mode == KVM_PAGE_TRACK_RESET_ACCESSED) { spte = spte & ~PT_ACCESSED_MASK; } else if (mode == KVM_PAGE_TRACK_ACCESS) { @@ -73,19 +75,20 @@ sevstep_spte_protect(u64 *sptep, bool pt_protect, enum kvm_page_track_mode mode) spte = spte & ~PT_WRITABLE_MASK; spte = spte & ~PT_USER_MASK; spte = spte | (0x1ULL << PT64_NX_SHIFT); - shouldFlush = true; + flush = true; } else if (mode == KVM_PAGE_TRACK_EXEC) { spte = spte | (0x1ULL << PT64_NX_SHIFT); - shouldFlush = true; + flush = true; } else if (mode == KVM_PAGE_TRACK_RESET_EXEC) { spte = spte & ~(0x1ULL << PT64_NX_SHIFT); - shouldFlush = true; + flush = true; } else { printk(KERN_WARNING "spte_protect was called with invalid mode" "parameter %d\n",mode); } - shouldFlush |= mmu_spte_update(sptep, spte); - return shouldFlush; + flush |= mmu_spte_update(sptep, spte); + + return flush; } EXPORT_SYMBOL(sevstep_spte_protect); |
