Lines Matching refs:sp
164 struct kvm_mmu_page *sp, u64 *spte, in FNAME()
454 FNAME(prefetch_gpte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, in FNAME()
461 if (FNAME(prefetch_invalid_gpte)(vcpu, sp, spte, gpte)) in FNAME()
467 pte_access = sp->role.access & FNAME(gpte_access)(vcpu, gpte); in FNAME()
484 static void FNAME(update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, in FNAME()
489 FNAME(prefetch_gpte)(vcpu, sp, spte, gpte, false); in FNAME()
518 struct kvm_mmu_page *sp; in FNAME() local
523 sp = page_header(__pa(sptep)); in FNAME()
525 if (sp->role.level > PT_PAGE_TABLE_LEVEL) in FNAME()
528 if (sp->role.direct) in FNAME()
529 return __direct_pte_prefetch(vcpu, sp, sptep); in FNAME()
531 i = (sptep - sp->spt) & ~(PTE_PREFETCH_NUM - 1); in FNAME()
532 spte = sp->spt + i; in FNAME()
541 if (!FNAME(prefetch_gpte)(vcpu, sp, spte, gptep[i], true)) in FNAME()
556 struct kvm_mmu_page *sp = NULL; in FNAME() local
586 sp = NULL; in FNAME()
589 sp = kvm_mmu_get_page(vcpu, table_gfn, addr, it.level-1, in FNAME()
600 if (sp) in FNAME()
601 link_shadow_page(it.sptep, sp, PT_GUEST_ACCESSED_MASK); in FNAME()
619 sp = kvm_mmu_get_page(vcpu, direct_gfn, addr, it.level-1, in FNAME()
621 link_shadow_page(it.sptep, sp, PT_GUEST_ACCESSED_MASK); in FNAME()
632 if (sp) in FNAME()
633 kvm_mmu_put_page(sp, it.sptep); in FNAME()
807 static gpa_t FNAME(get_level1_sp_gpa)(struct kvm_mmu_page *sp) in FNAME()
811 WARN_ON(sp->role.level != PT_PAGE_TABLE_LEVEL); in FNAME()
814 offset = sp->role.quadrant << PT64_LEVEL_BITS; in FNAME()
816 return gfn_to_gpa(sp->gfn) + offset * sizeof(pt_element_t); in FNAME()
822 struct kvm_mmu_page *sp; in FNAME() local
844 sp = page_header(__pa(sptep)); in FNAME()
849 if (!sp->unsync) in FNAME()
852 pte_gpa = FNAME(get_level1_sp_gpa)(sp); in FNAME()
853 pte_gpa += (sptep - sp->spt) * sizeof(pt_element_t); in FNAME()
855 if (mmu_page_zap_pte(vcpu->kvm, sp, sptep)) in FNAME()
865 FNAME(update_pte)(vcpu, sp, sptep, &gpte); in FNAME()
868 if (!is_shadow_present_pte(*sptep) || !sp->unsync_children) in FNAME()
926 static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) in FNAME()
933 BUG_ON(sp->role.direct); in FNAME()
935 first_pte_gpa = FNAME(get_level1_sp_gpa)(sp); in FNAME()
943 if (!sp->spt[i]) in FNAME()
952 if (FNAME(prefetch_invalid_gpte)(vcpu, sp, &sp->spt[i], gpte)) { in FNAME()
958 pte_access = sp->role.access; in FNAME()
962 if (sync_mmio_spte(vcpu, &sp->spt[i], gfn, pte_access, in FNAME()
966 if (gfn != sp->gfns[i]) { in FNAME()
967 drop_spte(vcpu->kvm, &sp->spt[i]); in FNAME()
974 host_writable = sp->spt[i] & SPTE_HOST_WRITEABLE; in FNAME()
976 set_spte(vcpu, &sp->spt[i], pte_access, in FNAME()
978 spte_to_pfn(sp->spt[i]), true, false, in FNAME()