Lines Matching refs:domain

890 void iommu_set_fault_handler(struct iommu_domain *domain,  in iommu_set_fault_handler()  argument
894 BUG_ON(!domain); in iommu_set_fault_handler()
896 domain->handler = handler; in iommu_set_fault_handler()
897 domain->handler_token = token; in iommu_set_fault_handler()
903 struct iommu_domain *domain; in iommu_domain_alloc() local
908 domain = bus->iommu_ops->domain_alloc(IOMMU_DOMAIN_UNMANAGED); in iommu_domain_alloc()
909 if (!domain) in iommu_domain_alloc()
912 domain->ops = bus->iommu_ops; in iommu_domain_alloc()
913 domain->type = IOMMU_DOMAIN_UNMANAGED; in iommu_domain_alloc()
915 return domain; in iommu_domain_alloc()
919 void iommu_domain_free(struct iommu_domain *domain) in iommu_domain_free() argument
921 domain->ops->domain_free(domain); in iommu_domain_free()
925 int iommu_attach_device(struct iommu_domain *domain, struct device *dev) in iommu_attach_device() argument
928 if (unlikely(domain->ops->attach_dev == NULL)) in iommu_attach_device()
931 ret = domain->ops->attach_dev(domain, dev); in iommu_attach_device()
938 void iommu_detach_device(struct iommu_domain *domain, struct device *dev) in iommu_detach_device() argument
940 if (unlikely(domain->ops->detach_dev == NULL)) in iommu_detach_device()
943 domain->ops->detach_dev(domain, dev); in iommu_detach_device()
960 struct iommu_domain *domain = data; in iommu_group_do_attach_device() local
962 return iommu_attach_device(domain, dev); in iommu_group_do_attach_device()
965 int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_attach_group() argument
967 return iommu_group_for_each_dev(group, domain, in iommu_attach_group()
974 struct iommu_domain *domain = data; in iommu_group_do_detach_device() local
976 iommu_detach_device(domain, dev); in iommu_group_do_detach_device()
981 void iommu_detach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_detach_group() argument
983 iommu_group_for_each_dev(group, domain, iommu_group_do_detach_device); in iommu_detach_group()
987 phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) in iommu_iova_to_phys() argument
989 if (unlikely(domain->ops->iova_to_phys == NULL)) in iommu_iova_to_phys()
992 return domain->ops->iova_to_phys(domain, iova); in iommu_iova_to_phys()
996 static size_t iommu_pgsize(struct iommu_domain *domain, in iommu_pgsize() argument
1016 pgsize &= domain->ops->pgsize_bitmap; in iommu_pgsize()
1028 int iommu_map(struct iommu_domain *domain, unsigned long iova, in iommu_map() argument
1036 if (unlikely(domain->ops->map == NULL || in iommu_map()
1037 domain->ops->pgsize_bitmap == 0UL)) in iommu_map()
1040 if (unlikely(!(domain->type & __IOMMU_DOMAIN_PAGING))) in iommu_map()
1044 min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); in iommu_map()
1060 size_t pgsize = iommu_pgsize(domain, iova | paddr, size); in iommu_map()
1065 ret = domain->ops->map(domain, iova, paddr, pgsize, prot); in iommu_map()
1076 iommu_unmap(domain, orig_iova, orig_size - size); in iommu_map()
1084 size_t iommu_unmap(struct iommu_domain *domain, unsigned long iova, size_t size) in iommu_unmap() argument
1090 if (unlikely(domain->ops->unmap == NULL || in iommu_unmap()
1091 domain->ops->pgsize_bitmap == 0UL)) in iommu_unmap()
1094 if (unlikely(!(domain->type & __IOMMU_DOMAIN_PAGING))) in iommu_unmap()
1098 min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); in iommu_unmap()
1118 size_t pgsize = iommu_pgsize(domain, iova, size - unmapped); in iommu_unmap()
1120 unmapped_page = domain->ops->unmap(domain, iova, pgsize); in iommu_unmap()
1136 size_t default_iommu_map_sg(struct iommu_domain *domain, unsigned long iova, in default_iommu_map_sg() argument
1144 if (unlikely(domain->ops->pgsize_bitmap == 0UL)) in default_iommu_map_sg()
1147 min_pagesz = 1 << __ffs(domain->ops->pgsize_bitmap); in default_iommu_map_sg()
1161 ret = iommu_map(domain, iova + mapped, phys, s->length, prot); in default_iommu_map_sg()
1172 iommu_unmap(domain, iova, mapped); in default_iommu_map_sg()
1179 int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, in iommu_domain_window_enable() argument
1182 if (unlikely(domain->ops->domain_window_enable == NULL)) in iommu_domain_window_enable()
1185 return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size, in iommu_domain_window_enable()
1190 void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr) in iommu_domain_window_disable() argument
1192 if (unlikely(domain->ops->domain_window_disable == NULL)) in iommu_domain_window_disable()
1195 return domain->ops->domain_window_disable(domain, wnd_nr); in iommu_domain_window_disable()
1212 int iommu_domain_get_attr(struct iommu_domain *domain, in iommu_domain_get_attr() argument
1223 *geometry = domain->geometry; in iommu_domain_get_attr()
1228 *paging = (domain->ops->pgsize_bitmap != 0UL); in iommu_domain_get_attr()
1233 if (domain->ops->domain_get_windows != NULL) in iommu_domain_get_attr()
1234 *count = domain->ops->domain_get_windows(domain); in iommu_domain_get_attr()
1240 if (!domain->ops->domain_get_attr) in iommu_domain_get_attr()
1243 ret = domain->ops->domain_get_attr(domain, attr, data); in iommu_domain_get_attr()
1250 int iommu_domain_set_attr(struct iommu_domain *domain, in iommu_domain_set_attr() argument
1260 if (domain->ops->domain_set_windows != NULL) in iommu_domain_set_attr()
1261 ret = domain->ops->domain_set_windows(domain, *count); in iommu_domain_set_attr()
1267 if (domain->ops->domain_set_attr == NULL) in iommu_domain_set_attr()
1270 ret = domain->ops->domain_set_attr(domain, attr, data); in iommu_domain_set_attr()