• Home
  • Raw
  • Download

Lines Matching refs:domain

876 void iommu_set_fault_handler(struct iommu_domain *domain,  in iommu_set_fault_handler()  argument
880 BUG_ON(!domain); in iommu_set_fault_handler()
882 domain->handler = handler; in iommu_set_fault_handler()
883 domain->handler_token = token; in iommu_set_fault_handler()
889 struct iommu_domain *domain; in iommu_domain_alloc() local
895 domain = kzalloc(sizeof(*domain), GFP_KERNEL); in iommu_domain_alloc()
896 if (!domain) in iommu_domain_alloc()
899 domain->ops = bus->iommu_ops; in iommu_domain_alloc()
901 ret = domain->ops->domain_init(domain); in iommu_domain_alloc()
905 return domain; in iommu_domain_alloc()
908 kfree(domain); in iommu_domain_alloc()
914 void iommu_domain_free(struct iommu_domain *domain) in iommu_domain_free() argument
916 if (likely(domain->ops->domain_destroy != NULL)) in iommu_domain_free()
917 domain->ops->domain_destroy(domain); in iommu_domain_free()
919 kfree(domain); in iommu_domain_free()
923 int iommu_attach_device(struct iommu_domain *domain, struct device *dev) in iommu_attach_device() argument
926 if (unlikely(domain->ops->attach_dev == NULL)) in iommu_attach_device()
929 ret = domain->ops->attach_dev(domain, dev); in iommu_attach_device()
936 void iommu_detach_device(struct iommu_domain *domain, struct device *dev) in iommu_detach_device() argument
938 if (unlikely(domain->ops->detach_dev == NULL)) in iommu_detach_device()
941 domain->ops->detach_dev(domain, dev); in iommu_detach_device()
958 struct iommu_domain *domain = data; in iommu_group_do_attach_device() local
960 return iommu_attach_device(domain, dev); in iommu_group_do_attach_device()
963 int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_attach_group() argument
965 return iommu_group_for_each_dev(group, domain, in iommu_attach_group()
972 struct iommu_domain *domain = data; in iommu_group_do_detach_device() local
974 iommu_detach_device(domain, dev); in iommu_group_do_detach_device()
979 void iommu_detach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_detach_group() argument
981 iommu_group_for_each_dev(group, domain, iommu_group_do_detach_device); in iommu_detach_group()
985 phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) in iommu_iova_to_phys() argument
987 if (unlikely(domain->ops->iova_to_phys == NULL)) in iommu_iova_to_phys()
990 return domain->ops->iova_to_phys(domain, iova); in iommu_iova_to_phys()
994 static size_t iommu_pgsize(struct iommu_domain *domain, in iommu_pgsize() argument
1014 pgsize &= domain->ops->pgsize_bitmap; in iommu_pgsize()
1026 int iommu_map(struct iommu_domain *domain, unsigned long iova, in iommu_map() argument
1034 if (unlikely(domain->ops->map == NULL || in iommu_map()
1035 domain->ops->pgsize_bitmap == 0UL)) in iommu_map()
1039 min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); in iommu_map()
1055 size_t pgsize = iommu_pgsize(domain, iova | paddr, size); in iommu_map()
1060 ret = domain->ops->map(domain, iova, paddr, pgsize, prot); in iommu_map()
1071 iommu_unmap(domain, orig_iova, orig_size - size); in iommu_map()
1079 size_t iommu_unmap(struct iommu_domain *domain, unsigned long iova, size_t size) in iommu_unmap() argument
1084 if (unlikely(domain->ops->unmap == NULL || in iommu_unmap()
1085 domain->ops->pgsize_bitmap == 0UL)) in iommu_unmap()
1089 min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); in iommu_unmap()
1109 size_t pgsize = iommu_pgsize(domain, iova, size - unmapped); in iommu_unmap()
1111 unmapped_page = domain->ops->unmap(domain, iova, pgsize); in iommu_unmap()
1128 int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, in iommu_domain_window_enable() argument
1131 if (unlikely(domain->ops->domain_window_enable == NULL)) in iommu_domain_window_enable()
1134 return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size, in iommu_domain_window_enable()
1139 void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr) in iommu_domain_window_disable() argument
1141 if (unlikely(domain->ops->domain_window_disable == NULL)) in iommu_domain_window_disable()
1144 return domain->ops->domain_window_disable(domain, wnd_nr); in iommu_domain_window_disable()
1161 int iommu_domain_get_attr(struct iommu_domain *domain, in iommu_domain_get_attr() argument
1172 *geometry = domain->geometry; in iommu_domain_get_attr()
1177 *paging = (domain->ops->pgsize_bitmap != 0UL); in iommu_domain_get_attr()
1182 if (domain->ops->domain_get_windows != NULL) in iommu_domain_get_attr()
1183 *count = domain->ops->domain_get_windows(domain); in iommu_domain_get_attr()
1189 if (!domain->ops->domain_get_attr) in iommu_domain_get_attr()
1192 ret = domain->ops->domain_get_attr(domain, attr, data); in iommu_domain_get_attr()
1199 int iommu_domain_set_attr(struct iommu_domain *domain, in iommu_domain_set_attr() argument
1209 if (domain->ops->domain_set_windows != NULL) in iommu_domain_set_attr()
1210 ret = domain->ops->domain_set_windows(domain, *count); in iommu_domain_set_attr()
1216 if (domain->ops->domain_set_attr == NULL) in iommu_domain_set_attr()
1219 ret = domain->ops->domain_set_attr(domain, attr, data); in iommu_domain_set_attr()