Lines Matching refs:mm_ops

135 static kvm_pte_t *kvm_pte_follow(kvm_pte_t pte, struct kvm_pgtable_mm_ops *mm_ops)  in kvm_pte_follow()  argument
137 return mm_ops->phys_to_virt(kvm_pte_to_phys(pte)); in kvm_pte_follow()
146 struct kvm_pgtable_mm_ops *mm_ops) in kvm_set_table_pte() argument
148 kvm_pte_t old = *ptep, pte = kvm_phys_to_pte(mm_ops->virt_to_phys(childp)); in kvm_set_table_pte()
216 childp = kvm_pte_follow(pte, data->pgt->mm_ops); in __kvm_pgtable_visit()
332 struct kvm_pgtable_mm_ops *mm_ops; member
423 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in hyp_map_walker() local
431 childp = (kvm_pte_t *)mm_ops->zalloc_page(NULL); in hyp_map_walker()
435 kvm_set_table_pte(ptep, childp, mm_ops); in hyp_map_walker()
445 .mm_ops = pgt->mm_ops, in kvm_pgtable_hyp_map()
464 struct kvm_pgtable_mm_ops *mm_ops) in kvm_pgtable_hyp_init() argument
468 pgt->pgd = (kvm_pte_t *)mm_ops->zalloc_page(NULL); in kvm_pgtable_hyp_init()
474 pgt->mm_ops = mm_ops; in kvm_pgtable_hyp_init()
484 struct kvm_pgtable_mm_ops *mm_ops = arg; in hyp_free_walker() local
486 mm_ops->put_page((void *)kvm_pte_follow(*ptep, mm_ops)); in hyp_free_walker()
495 .arg = pgt->mm_ops, in kvm_pgtable_hyp_destroy()
499 pgt->mm_ops->put_page(pgt->pgd); in kvm_pgtable_hyp_destroy()
514 struct kvm_pgtable_mm_ops *mm_ops; member
624 u32 level, struct kvm_pgtable_mm_ops *mm_ops) in stage2_put_pte() argument
635 mm_ops->put_page(ptep); in stage2_put_pte()
665 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walker_try_leaf() local
685 stage2_put_pte(ptep, data->mmu, addr, level, mm_ops); in stage2_map_walker_try_leaf()
689 if (mm_ops->dcache_clean_inval_poc && stage2_pte_cacheable(pgt, new)) in stage2_map_walker_try_leaf()
690 mm_ops->dcache_clean_inval_poc(kvm_pte_follow(new, mm_ops), in stage2_map_walker_try_leaf()
693 if (mm_ops->icache_inval_pou && stage2_pte_executable(new)) in stage2_map_walker_try_leaf()
694 mm_ops->icache_inval_pou(kvm_pte_follow(new, mm_ops), granule); in stage2_map_walker_try_leaf()
698 mm_ops->get_page(ptep); in stage2_map_walker_try_leaf()
714 data->childp = kvm_pte_follow(*ptep, data->mm_ops); in stage2_map_walk_table_pre()
730 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walk_leaf() local
736 mm_ops->put_page(ptep); in stage2_map_walk_leaf()
751 childp = mm_ops->zalloc_page(data->memcache); in stage2_map_walk_leaf()
761 stage2_put_pte(ptep, data->mmu, addr, level, mm_ops); in stage2_map_walk_leaf()
763 kvm_set_table_pte(ptep, childp, mm_ops); in stage2_map_walk_leaf()
764 mm_ops->get_page(ptep); in stage2_map_walk_leaf()
773 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_map_walk_table_post() local
786 childp = kvm_pte_follow(*ptep, mm_ops); in stage2_map_walk_table_post()
789 mm_ops->put_page(childp); in stage2_map_walk_table_post()
790 mm_ops->put_page(ptep); in stage2_map_walk_table_post()
840 .mm_ops = pgt->mm_ops, in kvm_pgtable_stage2_map()
871 .mm_ops = pgt->mm_ops, in kvm_pgtable_stage2_set_owner()
896 struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops; in stage2_unmap_walker() local
903 mm_ops->put_page(ptep); in stage2_unmap_walker()
909 childp = kvm_pte_follow(pte, mm_ops); in stage2_unmap_walker()
911 if (mm_ops->page_count(childp) != 1) in stage2_unmap_walker()
922 stage2_put_pte(ptep, mmu, addr, level, mm_ops); in stage2_unmap_walker()
925 kvm_pte_t *pte_follow = kvm_pte_follow(pte, mm_ops); in stage2_unmap_walker()
933 mm_ops->put_page(childp); in stage2_unmap_walker()
954 struct kvm_pgtable_mm_ops *mm_ops; member
963 struct kvm_pgtable_mm_ops *mm_ops = data->mm_ops; in stage2_attr_walker() local
983 if (mm_ops->icache_inval_pou && in stage2_attr_walker()
985 mm_ops->icache_inval_pou(kvm_pte_follow(pte, mm_ops), in stage2_attr_walker()
1003 .mm_ops = pgt->mm_ops, in stage2_update_leaf_attrs()
1090 struct kvm_pgtable_mm_ops *mm_ops = pgt->mm_ops; in stage2_flush_walker() local
1097 pte_follow = kvm_pte_follow(pte, mm_ops); in stage2_flush_walker()
1120 struct kvm_pgtable_mm_ops *mm_ops, in __kvm_pgtable_stage2_init() argument
1131 pgt->pgd = mm_ops->zalloc_pages_exact(pgd_sz); in __kvm_pgtable_stage2_init()
1137 pgt->mm_ops = mm_ops; in __kvm_pgtable_stage2_init()
1151 struct kvm_pgtable_mm_ops *mm_ops = arg; in stage2_free_walker() local
1157 mm_ops->put_page(ptep); in stage2_free_walker()
1160 mm_ops->put_page(kvm_pte_follow(pte, mm_ops)); in stage2_free_walker()
1172 .arg = pgt->mm_ops, in kvm_pgtable_stage2_destroy()
1177 pgt->mm_ops->free_pages_exact(pgt->pgd, pgd_sz); in kvm_pgtable_stage2_destroy()