aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/paging_tmpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/kvm/paging_tmpl.h')
-rw-r--r--drivers/kvm/paging_tmpl.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index bc64cceec039..10ba0a80ce59 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -202,6 +202,21 @@ static void FNAME(set_pte)(struct kvm_vcpu *vcpu, u64 guest_pte,
202 guest_pte & PT_DIRTY_MASK, access_bits, gfn); 202 guest_pte & PT_DIRTY_MASK, access_bits, gfn);
203} 203}
204 204
205static void FNAME(update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *page,
206 u64 *spte, const void *pte, int bytes)
207{
208 pt_element_t gpte;
209
210 if (bytes < sizeof(pt_element_t))
211 return;
212 gpte = *(const pt_element_t *)pte;
213 if (~gpte & (PT_PRESENT_MASK | PT_ACCESSED_MASK))
214 return;
215 pgprintk("%s: gpte %llx spte %p\n", __FUNCTION__, (u64)gpte, spte);
216 FNAME(set_pte)(vcpu, gpte, spte, 6,
217 (gpte & PT_BASE_ADDR_MASK) >> PAGE_SHIFT);
218}
219
205static void FNAME(set_pde)(struct kvm_vcpu *vcpu, u64 guest_pde, 220static void FNAME(set_pde)(struct kvm_vcpu *vcpu, u64 guest_pde,
206 u64 *shadow_pte, u64 access_bits, gfn_t gfn) 221 u64 *shadow_pte, u64 access_bits, gfn_t gfn)
207{ 222{