Lines Matching refs:sp
172 struct kvm_mmu_page *sp, u64 *spte, in FNAME()
463 FNAME(prefetch_gpte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, in FNAME()
470 if (FNAME(prefetch_invalid_gpte)(vcpu, sp, spte, gpte)) in FNAME()
476 pte_access = sp->role.access & FNAME(gpte_access)(vcpu, gpte); in FNAME()
493 static void FNAME(update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, in FNAME()
498 FNAME(prefetch_gpte)(vcpu, sp, spte, gpte, false); in FNAME()
527 struct kvm_mmu_page *sp; in FNAME() local
532 sp = page_header(__pa(sptep)); in FNAME()
534 if (sp->role.level > PT_PAGE_TABLE_LEVEL) in FNAME()
537 if (sp->role.direct) in FNAME()
538 return __direct_pte_prefetch(vcpu, sp, sptep); in FNAME()
540 i = (sptep - sp->spt) & ~(PTE_PREFETCH_NUM - 1); in FNAME()
541 spte = sp->spt + i; in FNAME()
550 if (!FNAME(prefetch_gpte)(vcpu, sp, spte, gptep[i], true)) in FNAME()
565 struct kvm_mmu_page *sp = NULL; in FNAME() local
595 sp = NULL; in FNAME()
598 sp = kvm_mmu_get_page(vcpu, table_gfn, addr, it.level-1, in FNAME()
609 if (sp) in FNAME()
610 link_shadow_page(it.sptep, sp, PT_GUEST_ACCESSED_MASK); in FNAME()
628 sp = kvm_mmu_get_page(vcpu, direct_gfn, addr, it.level-1, in FNAME()
630 link_shadow_page(it.sptep, sp, PT_GUEST_ACCESSED_MASK); in FNAME()
641 if (sp) in FNAME()
642 kvm_mmu_put_page(sp, it.sptep); in FNAME()
818 static gpa_t FNAME(get_level1_sp_gpa)(struct kvm_mmu_page *sp) in FNAME()
822 WARN_ON(sp->role.level != PT_PAGE_TABLE_LEVEL); in FNAME()
825 offset = sp->role.quadrant << PT64_LEVEL_BITS; in FNAME()
827 return gfn_to_gpa(sp->gfn) + offset * sizeof(pt_element_t); in FNAME()
833 struct kvm_mmu_page *sp; in FNAME() local
855 sp = page_header(__pa(sptep)); in FNAME()
860 if (!sp->unsync) in FNAME()
863 pte_gpa = FNAME(get_level1_sp_gpa)(sp); in FNAME()
864 pte_gpa += (sptep - sp->spt) * sizeof(pt_element_t); in FNAME()
866 if (mmu_page_zap_pte(vcpu->kvm, sp, sptep)) in FNAME()
876 FNAME(update_pte)(vcpu, sp, sptep, &gpte); in FNAME()
879 if (!is_shadow_present_pte(*sptep) || !sp->unsync_children) in FNAME()
937 static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) in FNAME()
944 BUG_ON(sp->role.direct); in FNAME()
946 first_pte_gpa = FNAME(get_level1_sp_gpa)(sp); in FNAME()
954 if (!sp->spt[i]) in FNAME()
963 if (FNAME(prefetch_invalid_gpte)(vcpu, sp, &sp->spt[i], gpte)) { in FNAME()
969 pte_access = sp->role.access; in FNAME()
973 if (sync_mmio_spte(vcpu->kvm, &sp->spt[i], gfn, pte_access, in FNAME()
977 if (gfn != sp->gfns[i]) { in FNAME()
978 drop_spte(vcpu->kvm, &sp->spt[i]); in FNAME()
985 host_writable = sp->spt[i] & SPTE_HOST_WRITEABLE; in FNAME()
987 set_spte(vcpu, &sp->spt[i], pte_access, in FNAME()
989 spte_to_pfn(sp->spt[i]), true, false, in FNAME()