Lines Matching refs:pgt
316 int pkvm_pgtable_stage2_init(struct kvm_pgtable *pgt, struct kvm_s2_mmu *mmu, in pkvm_pgtable_stage2_init() argument
319 pgt->pkvm_mappings = RB_ROOT_CACHED; in pkvm_pgtable_stage2_init()
320 pgt->mmu = mmu; in pkvm_pgtable_stage2_init()
325 static int __pkvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 start, u64 end) in __pkvm_pgtable_stage2_unmap() argument
327 struct kvm *kvm = kvm_s2_mmu_to_kvm(pgt->mmu); in __pkvm_pgtable_stage2_unmap()
335 for_each_mapping_in_range_safe(pgt, start, end, mapping) { in __pkvm_pgtable_stage2_unmap()
340 pkvm_mapping_remove(mapping, &pgt->pkvm_mappings); in __pkvm_pgtable_stage2_unmap()
347 void pkvm_pgtable_stage2_destroy_range(struct kvm_pgtable *pgt, in pkvm_pgtable_stage2_destroy_range() argument
350 __pkvm_pgtable_stage2_unmap(pgt, addr, addr + size); in pkvm_pgtable_stage2_destroy_range()
353 void pkvm_pgtable_stage2_destroy_pgd(struct kvm_pgtable *pgt) in pkvm_pgtable_stage2_destroy_pgd() argument
356 WARN_ON_ONCE(!RB_EMPTY_ROOT(&pgt->pkvm_mappings.rb_root)); in pkvm_pgtable_stage2_destroy_pgd()
359 int pkvm_pgtable_stage2_map(struct kvm_pgtable *pgt, u64 addr, u64 size, in pkvm_pgtable_stage2_map() argument
363 struct kvm *kvm = kvm_s2_mmu_to_kvm(pgt->mmu); in pkvm_pgtable_stage2_map()
380 mapping = pkvm_mapping_iter_first(&pgt->pkvm_mappings, addr, addr + size - 1); in pkvm_pgtable_stage2_map()
386 ret = __pkvm_pgtable_stage2_unmap(pgt, addr, addr + size); in pkvm_pgtable_stage2_map()
400 pkvm_mapping_insert(mapping, &pgt->pkvm_mappings); in pkvm_pgtable_stage2_map()
405 int pkvm_pgtable_stage2_unmap(struct kvm_pgtable *pgt, u64 addr, u64 size) in pkvm_pgtable_stage2_unmap() argument
407 lockdep_assert_held_write(&kvm_s2_mmu_to_kvm(pgt->mmu)->mmu_lock); in pkvm_pgtable_stage2_unmap()
409 return __pkvm_pgtable_stage2_unmap(pgt, addr, addr + size); in pkvm_pgtable_stage2_unmap()
412 int pkvm_pgtable_stage2_wrprotect(struct kvm_pgtable *pgt, u64 addr, u64 size) in pkvm_pgtable_stage2_wrprotect() argument
414 struct kvm *kvm = kvm_s2_mmu_to_kvm(pgt->mmu); in pkvm_pgtable_stage2_wrprotect()
420 for_each_mapping_in_range_safe(pgt, addr, addr + size, mapping) { in pkvm_pgtable_stage2_wrprotect()
430 int pkvm_pgtable_stage2_flush(struct kvm_pgtable *pgt, u64 addr, u64 size) in pkvm_pgtable_stage2_flush() argument
432 struct kvm *kvm = kvm_s2_mmu_to_kvm(pgt->mmu); in pkvm_pgtable_stage2_flush()
436 for_each_mapping_in_range_safe(pgt, addr, addr + size, mapping) in pkvm_pgtable_stage2_flush()
443 bool pkvm_pgtable_stage2_test_clear_young(struct kvm_pgtable *pgt, u64 addr, u64 size, bool mkold) in pkvm_pgtable_stage2_test_clear_young() argument
445 struct kvm *kvm = kvm_s2_mmu_to_kvm(pgt->mmu); in pkvm_pgtable_stage2_test_clear_young()
451 for_each_mapping_in_range_safe(pgt, addr, addr + size, mapping) in pkvm_pgtable_stage2_test_clear_young()
458 int pkvm_pgtable_stage2_relax_perms(struct kvm_pgtable *pgt, u64 addr, enum kvm_pgtable_prot prot, in pkvm_pgtable_stage2_relax_perms() argument
464 void pkvm_pgtable_stage2_mkyoung(struct kvm_pgtable *pgt, u64 addr, in pkvm_pgtable_stage2_mkyoung() argument
475 kvm_pte_t *pkvm_pgtable_stage2_create_unlinked(struct kvm_pgtable *pgt, u64 phys, s8 level, in pkvm_pgtable_stage2_create_unlinked() argument
482 int pkvm_pgtable_stage2_split(struct kvm_pgtable *pgt, u64 addr, u64 size, in pkvm_pgtable_stage2_split() argument