Loading drivers/kvm/paging_tmpl.h +12 −1 Original line number Diff line number Diff line Loading @@ -271,6 +271,7 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu, pt_element_t *guest_ent; int writable_shadow; gfn_t gfn; struct kvm_mmu_page *page; if (is_writeble_pte(*shadow_ent)) return 0; Loading Loading @@ -303,7 +304,17 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu, } gfn = walker->gfn; if (kvm_mmu_lookup_page(vcpu, gfn)) { if (user) { /* * Usermode page faults won't be for page table updates. */ while ((page = kvm_mmu_lookup_page(vcpu, gfn)) != NULL) { pgprintk("%s: zap %lx %x\n", __FUNCTION__, gfn, page->role.word); kvm_mmu_zap_page(vcpu, page); } } else if (kvm_mmu_lookup_page(vcpu, gfn)) { pgprintk("%s: found shadow page for %lx, marking ro\n", __FUNCTION__, gfn); *write_pt = 1; Loading Loading
drivers/kvm/paging_tmpl.h +12 −1 Original line number Diff line number Diff line Loading @@ -271,6 +271,7 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu, pt_element_t *guest_ent; int writable_shadow; gfn_t gfn; struct kvm_mmu_page *page; if (is_writeble_pte(*shadow_ent)) return 0; Loading Loading @@ -303,7 +304,17 @@ static int FNAME(fix_write_pf)(struct kvm_vcpu *vcpu, } gfn = walker->gfn; if (kvm_mmu_lookup_page(vcpu, gfn)) { if (user) { /* * Usermode page faults won't be for page table updates. */ while ((page = kvm_mmu_lookup_page(vcpu, gfn)) != NULL) { pgprintk("%s: zap %lx %x\n", __FUNCTION__, gfn, page->role.word); kvm_mmu_zap_page(vcpu, page); } } else if (kvm_mmu_lookup_page(vcpu, gfn)) { pgprintk("%s: found shadow page for %lx, marking ro\n", __FUNCTION__, gfn); *write_pt = 1; Loading