diff options
Diffstat (limited to 'drivers/kvm/paging_tmpl.h')
-rw-r--r-- | drivers/kvm/paging_tmpl.h | 15 |
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 | ||
205 | static 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 | |||
205 | static void FNAME(set_pde)(struct kvm_vcpu *vcpu, u64 guest_pde, | 220 | static 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 | { |