Lines Matching refs:mm_ops
174 static kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops) in kvm_pte_follow() argument
176 return mm_ops->phys_to_virt(kvm_pte_to_phys(pte)); in kvm_pte_follow()
185 struct kvm_pgtable_mm_ops *mm_ops) in kvm_set_table_pte() argument
187 kvm_pte_t old = *ptep, pte = kvm_phys_to_pte(mm_ops->virt_to_phys(childp)); in kvm_set_table_pte()
255 childp = kvm_pte_follow(pte, data->pgt->mm_ops); in __kvm_pgtable_visit()
332 struct kvm_pgtable_mm_ops *mm_ops; member
388 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in hyp_map_walker() local
396 childp = (kvm_pte_t *)mm_ops->zalloc_page(NULL); in hyp_map_walker()
400 kvm_set_table_pte(ptep, childp, mm_ops); in hyp_map_walker()
410 .mm_ops = pgt->mm_ops, in kvm_pgtable_hyp_map()
429 struct kvm_pgtable_mm_ops *mm_ops) in kvm_pgtable_hyp_init() argument
433 pgt->pgd = (kvm_pte_t *)mm_ops->zalloc_page(NULL); in kvm_pgtable_hyp_init()
439 pgt->mm_ops = mm_ops; in kvm_pgtable_hyp_init()
447 struct kvm_pgtable_mm_ops *mm_ops = arg; in hyp_free_walker() local
449 mm_ops->put_page((void *)kvm_pte_follow(*ptep, mm_ops)); in hyp_free_walker()
458 .arg = pgt->mm_ops, in kvm_pgtable_hyp_destroy()
462 pgt->mm_ops->put_page(pgt->pgd); in kvm_pgtable_hyp_destroy()
477 struct kvm_pgtable_mm_ops *mm_ops; member
566 u32 level, struct kvm_pgtable_mm_ops *mm_ops) in stage2_put_pte() argument
577 mm_ops->put_page(ptep); in stage2_put_pte()
586 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walker_try_leaf() local
606 stage2_put_pte(ptep, data->mmu, addr, level, mm_ops); in stage2_map_walker_try_leaf()
611 mm_ops->get_page(ptep); in stage2_map_walker_try_leaf()
627 data->childp = kvm_pte_follow(*ptep, data->mm_ops); in stage2_map_walk_table_pre()
643 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walk_leaf() local
649 mm_ops->put_page(ptep); in stage2_map_walk_leaf()
664 childp = mm_ops->zalloc_page(data->memcache); in stage2_map_walk_leaf()
674 stage2_put_pte(ptep, data->mmu, addr, level, mm_ops); in stage2_map_walk_leaf()
676 kvm_set_table_pte(ptep, childp, mm_ops); in stage2_map_walk_leaf()
677 mm_ops->get_page(ptep); in stage2_map_walk_leaf()
686 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walk_table_post() local
699 childp = kvm_pte_follow(*ptep, mm_ops); in stage2_map_walk_table_post()
702 mm_ops->put_page(childp); in stage2_map_walk_table_post()
703 mm_ops->put_page(ptep); in stage2_map_walk_table_post()
753 .mm_ops = pgt->mm_ops, in kvm_pgtable_stage2_map()
783 .mm_ops = pgt->mm_ops, in kvm_pgtable_stage2_set_owner()
813 struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops; in stage2_unmap_walker() local
820 mm_ops->put_page(ptep); in stage2_unmap_walker()
826 childp = kvm_pte_follow(pte, mm_ops); in stage2_unmap_walker()
828 if (mm_ops->page_count(childp) != 1) in stage2_unmap_walker()
839 stage2_put_pte(ptep, mmu, addr, level, mm_ops); in stage2_unmap_walker()
842 __flush_dcache_area(kvm_pte_follow(pte, mm_ops), in stage2_unmap_walker()
847 mm_ops->put_page(childp); in stage2_unmap_walker()
989 struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops; in stage2_flush_walker() local
995 __flush_dcache_area(kvm_pte_follow(pte, mm_ops), kvm_granule_size(level)); in stage2_flush_walker()
1014 struct kvm_pgtable_mm_ops *mm_ops, in kvm_pgtable_stage2_init_flags() argument
1024 pgt->pgd = mm_ops->zalloc_pages_exact(pgd_sz); in kvm_pgtable_stage2_init_flags()
1030 pgt->mm_ops = mm_ops; in kvm_pgtable_stage2_init_flags()
1043 struct kvm_pgtable_mm_ops *mm_ops = arg; in stage2_free_walker() local
1049 mm_ops->put_page(ptep); in stage2_free_walker()
1052 mm_ops->put_page(kvm_pte_follow(pte, mm_ops)); in stage2_free_walker()
1064 .arg = pgt->mm_ops, in kvm_pgtable_stage2_destroy()
1069 pgt->mm_ops->free_pages_exact(pgt->pgd, pgd_sz); in kvm_pgtable_stage2_destroy()