Lines Matching refs:hr_priv
779 static void hl_mmu_hr_pool_destroy(struct hl_device *hdev, struct hl_mmu_hr_priv *hr_priv, in hl_mmu_hr_pool_destroy() argument
783 struct gen_pool **pool = &hr_priv->mmu_pgt_pool; in hl_mmu_hr_pool_destroy()
791 if (hr_priv->mmu_asid_hop0) { in hl_mmu_hr_pool_destroy()
793 hop0_pgt = &hr_priv->mmu_asid_hop0[asid]; in hl_mmu_hr_pool_destroy()
824 int hl_mmu_hr_init(struct hl_device *hdev, struct hl_mmu_hr_priv *hr_priv, u32 hop_table_size, in hl_mmu_hr_init() argument
840 hr_priv->mmu_pgt_pool = gen_pool_create(PAGE_SHIFT, -1); in hl_mmu_hr_init()
841 if (ZERO_OR_NULL_PTR(hr_priv->mmu_pgt_pool)) { in hl_mmu_hr_init()
846 hr_priv->mmu_asid_hop0 = kvcalloc(prop->max_asid, sizeof(struct pgt_info), GFP_KERNEL); in hl_mmu_hr_init()
847 if (ZERO_OR_NULL_PTR(hr_priv->mmu_asid_hop0)) { in hl_mmu_hr_init()
864 rc = gen_pool_add_virt(hr_priv->mmu_pgt_pool, virt_addr, (phys_addr_t) dma_addr, in hl_mmu_hr_init()
873 hop0_pgt = &hr_priv->mmu_asid_hop0[i]; in hl_mmu_hr_init()
875 gen_pool_dma_zalloc_align(hr_priv->mmu_pgt_pool, in hl_mmu_hr_init()
891 hl_mmu_hr_pool_destroy(hdev, hr_priv, hop_table_size); in hl_mmu_hr_init()
892 if (!ZERO_OR_NULL_PTR(hr_priv->mmu_asid_hop0)) in hl_mmu_hr_init()
893 kvfree(hr_priv->mmu_asid_hop0); in hl_mmu_hr_init()
910 void hl_mmu_hr_fini(struct hl_device *hdev, struct hl_mmu_hr_priv *hr_priv, u32 hop_table_size) in hl_mmu_hr_fini() argument
914 hl_mmu_hr_pool_destroy(hdev, hr_priv, hop_table_size); in hl_mmu_hr_fini()
916 if (!ZERO_OR_NULL_PTR(hr_priv->mmu_asid_hop0)) { in hl_mmu_hr_fini()
917 kvfree(hr_priv->mmu_asid_hop0); in hl_mmu_hr_fini()
923 hr_priv->mmu_asid_hop0 = NULL; in hl_mmu_hr_fini()
933 void hl_mmu_hr_free_hop_remove_pgt(struct pgt_info *pgt_info, struct hl_mmu_hr_priv *hr_priv, in hl_mmu_hr_free_hop_remove_pgt() argument
936 gen_pool_free(hr_priv->mmu_pgt_pool, pgt_info->virt_addr, hop_table_size); in hl_mmu_hr_free_hop_remove_pgt()
1006 struct hl_mmu_hr_priv *hr_priv, in hl_mmu_hr_put_pte() argument
1019 hl_mmu_hr_free_hop_remove_pgt(pgt_info, hr_priv, hop_table_size); in hl_mmu_hr_put_pte()
1064 struct pgt_info *hl_mmu_hr_alloc_hop(struct hl_ctx *ctx, struct hl_mmu_hr_priv *hr_priv, in hl_mmu_hr_alloc_hop() argument
1079 virt_addr = gen_pool_dma_zalloc_align(hr_priv->mmu_pgt_pool, in hl_mmu_hr_alloc_hop()
1092 if (gen_pool_add_virt(hr_priv->mmu_pgt_pool, (unsigned long)virt_addr, in hl_mmu_hr_alloc_hop()
1132 struct hl_mmu_hr_priv *hr_priv, in hl_mmu_hr_get_alloc_next_hop() argument
1143 return hl_mmu_hr_alloc_hop(ctx, hr_priv, hr_func, mmu_prop); in hl_mmu_hr_get_alloc_next_hop()