• Home
  • Raw
  • Download

Lines Matching refs:table_group

124 static long pnv_npu_unset_window(struct iommu_table_group *table_group,
127 static long pnv_npu_set_window(struct iommu_table_group *table_group, int num, in pnv_npu_set_window() argument
130 struct pnv_ioda_pe *npe = container_of(table_group, struct pnv_ioda_pe, in pnv_npu_set_window()
131 table_group); in pnv_npu_set_window()
141 if (npe->table_group.tables[num2]) in pnv_npu_set_window()
142 pnv_npu_unset_window(&npe->table_group, num2); in pnv_npu_set_window()
163 tbl, &npe->table_group); in pnv_npu_set_window()
168 static long pnv_npu_unset_window(struct iommu_table_group *table_group, int num) in pnv_npu_unset_window() argument
170 struct pnv_ioda_pe *npe = container_of(table_group, struct pnv_ioda_pe, in pnv_npu_unset_window()
171 table_group); in pnv_npu_unset_window()
175 if (!npe->table_group.tables[num]) in pnv_npu_unset_window()
190 pnv_pci_unlink_table_and_group(npe->table_group.tables[num], in pnv_npu_unset_window()
191 &npe->table_group); in pnv_npu_unset_window()
197 static void pnv_npu_take_ownership(struct iommu_table_group *table_group) in pnv_npu_take_ownership() argument
199 struct pnv_ioda_pe *npe = container_of(table_group, struct pnv_ioda_pe, in pnv_npu_take_ownership()
200 table_group); in pnv_npu_take_ownership()
211 if (npe->table_group.tables[0]) { in pnv_npu_take_ownership()
212 pnv_npu_unset_window(&npe->table_group, 0); in pnv_npu_take_ownership()
231 static void pnv_npu_release_ownership(struct iommu_table_group *table_group) in pnv_npu_release_ownership() argument
233 struct pnv_ioda_pe *npe = container_of(table_group, struct pnv_ioda_pe, in pnv_npu_release_ownership()
234 table_group); in pnv_npu_release_ownership()
262 struct iommu_table_group table_group; member
275 struct iommu_table_group *table_group, in pnv_npu_peers_create_table_userspace() argument
279 struct npu_comp *npucomp = container_of(table_group, struct npu_comp, in pnv_npu_peers_create_table_userspace()
280 table_group); in pnv_npu_peers_create_table_userspace()
283 !npucomp->pe[0]->table_group.ops || in pnv_npu_peers_create_table_userspace()
284 !npucomp->pe[0]->table_group.ops->create_table) in pnv_npu_peers_create_table_userspace()
287 return npucomp->pe[0]->table_group.ops->create_table( in pnv_npu_peers_create_table_userspace()
288 &npucomp->pe[0]->table_group, num, page_shift, in pnv_npu_peers_create_table_userspace()
292 static long pnv_npu_peers_set_window(struct iommu_table_group *table_group, in pnv_npu_peers_set_window() argument
297 struct npu_comp *npucomp = container_of(table_group, struct npu_comp, in pnv_npu_peers_set_window()
298 table_group); in pnv_npu_peers_set_window()
303 if (!pe->table_group.ops->set_window) in pnv_npu_peers_set_window()
306 ret = pe->table_group.ops->set_window(&pe->table_group, in pnv_npu_peers_set_window()
316 if (!pe->table_group.ops->unset_window) in pnv_npu_peers_set_window()
319 ret = pe->table_group.ops->unset_window( in pnv_npu_peers_set_window()
320 &pe->table_group, num); in pnv_npu_peers_set_window()
325 table_group->tables[num] = iommu_tce_table_get(tbl); in pnv_npu_peers_set_window()
331 static long pnv_npu_peers_unset_window(struct iommu_table_group *table_group, in pnv_npu_peers_unset_window() argument
336 struct npu_comp *npucomp = container_of(table_group, struct npu_comp, in pnv_npu_peers_unset_window()
337 table_group); in pnv_npu_peers_unset_window()
342 WARN_ON(npucomp->table_group.tables[num] != in pnv_npu_peers_unset_window()
343 table_group->tables[num]); in pnv_npu_peers_unset_window()
344 if (!npucomp->table_group.tables[num]) in pnv_npu_peers_unset_window()
347 if (!pe->table_group.ops->unset_window) in pnv_npu_peers_unset_window()
350 ret = pe->table_group.ops->unset_window(&pe->table_group, num); in pnv_npu_peers_unset_window()
359 if (!npucomp->table_group.tables[num]) in pnv_npu_peers_unset_window()
362 if (!pe->table_group.ops->set_window) in pnv_npu_peers_unset_window()
365 ret = pe->table_group.ops->set_window(&pe->table_group, in pnv_npu_peers_unset_window()
366 num, table_group->tables[num]); in pnv_npu_peers_unset_window()
370 } else if (table_group->tables[num]) { in pnv_npu_peers_unset_window()
371 iommu_tce_table_put(table_group->tables[num]); in pnv_npu_peers_unset_window()
372 table_group->tables[num] = NULL; in pnv_npu_peers_unset_window()
378 static void pnv_npu_peers_take_ownership(struct iommu_table_group *table_group) in pnv_npu_peers_take_ownership() argument
381 struct npu_comp *npucomp = container_of(table_group, struct npu_comp, in pnv_npu_peers_take_ownership()
382 table_group); in pnv_npu_peers_take_ownership()
387 if (!pe->table_group.ops || in pnv_npu_peers_take_ownership()
388 !pe->table_group.ops->take_ownership) in pnv_npu_peers_take_ownership()
390 pe->table_group.ops->take_ownership(&pe->table_group); in pnv_npu_peers_take_ownership()
395 struct iommu_table_group *table_group) in pnv_npu_peers_release_ownership() argument
398 struct npu_comp *npucomp = container_of(table_group, struct npu_comp, in pnv_npu_peers_release_ownership()
399 table_group); in pnv_npu_peers_release_ownership()
404 if (!pe->table_group.ops || in pnv_npu_peers_release_ownership()
405 !pe->table_group.ops->release_ownership) in pnv_npu_peers_release_ownership()
407 pe->table_group.ops->release_ownership(&pe->table_group); in pnv_npu_peers_release_ownership()
432 struct iommu_table_group *table_group; in pnv_try_setup_npu_table_group() local
451 table_group = &hose->npu->npucomp.table_group; in pnv_try_setup_npu_table_group()
453 if (!table_group->group) { in pnv_try_setup_npu_table_group()
454 table_group->ops = &pnv_npu_peers_ops; in pnv_try_setup_npu_table_group()
455 iommu_register_group(table_group, in pnv_try_setup_npu_table_group()
462 table_group = &pe->npucomp->table_group; in pnv_try_setup_npu_table_group()
463 table_group->ops = &pnv_npu_peers_ops; in pnv_try_setup_npu_table_group()
464 iommu_register_group(table_group, hose->global_number, in pnv_try_setup_npu_table_group()
469 table_group->max_dynamic_windows_supported = in pnv_try_setup_npu_table_group()
470 pe->table_group.max_dynamic_windows_supported; in pnv_try_setup_npu_table_group()
471 table_group->tce32_start = pe->table_group.tce32_start; in pnv_try_setup_npu_table_group()
472 table_group->tce32_size = pe->table_group.tce32_size; in pnv_try_setup_npu_table_group()
473 table_group->max_levels = pe->table_group.max_levels; in pnv_try_setup_npu_table_group()
474 if (!table_group->pgsizes) in pnv_try_setup_npu_table_group()
475 table_group->pgsizes = pe->table_group.pgsizes; in pnv_try_setup_npu_table_group()
477 npucomp = container_of(table_group, struct npu_comp, table_group); in pnv_try_setup_npu_table_group()
480 return table_group; in pnv_try_setup_npu_table_group()
485 struct iommu_table_group *table_group; in pnv_npu_compound_attach() local
501 pe->table_group.ops = &pnv_pci_npu_ops; in pnv_npu_compound_attach()
503 table_group = iommu_group_get_iommudata( in pnv_npu_compound_attach()
511 table_group->pgsizes &= pe->table_group.pgsizes; in pnv_npu_compound_attach()
512 npucomp = container_of(table_group, struct npu_comp, table_group); in pnv_npu_compound_attach()
521 iommu_add_device(table_group, &npdev->dev); in pnv_npu_compound_attach()
524 return table_group; in pnv_npu_compound_attach()