• Home
  • Raw
  • Download

Lines Matching refs:domain

46 	struct iommu_domain *domain;  member
222 static int __iommu_attach_device(struct iommu_domain *domain,
224 static int __iommu_attach_group(struct iommu_domain *domain,
226 static void __iommu_detach_group(struct iommu_domain *domain,
643 struct iommu_domain *domain = group->default_domain; in iommu_group_create_direct_mappings() local
649 if (!domain || domain->type != IOMMU_DOMAIN_DMA) in iommu_group_create_direct_mappings()
652 BUG_ON(!domain->pgsize_bitmap); in iommu_group_create_direct_mappings()
654 pg_size = 1UL << __ffs(domain->pgsize_bitmap); in iommu_group_create_direct_mappings()
663 if (domain->ops->apply_resv_region) in iommu_group_create_direct_mappings()
664 domain->ops->apply_resv_region(dev, domain, entry); in iommu_group_create_direct_mappings()
676 phys_addr = iommu_iova_to_phys(domain, addr); in iommu_group_create_direct_mappings()
680 ret = iommu_map(domain, addr, addr, pg_size, entry->prot); in iommu_group_create_direct_mappings()
687 iommu_flush_tlb_all(domain); in iommu_group_create_direct_mappings()
749 if (group->domain) in iommu_group_add_device()
750 ret = __iommu_attach_device(group->domain, dev); in iommu_group_add_device()
1108 struct iommu_domain *domain = iommu_get_domain_for_dev(dev); in iommu_page_response() local
1110 if (!domain || !domain->ops->page_response) in iommu_page_response()
1141 ret = domain->ops->page_response(dev, evt, msg); in iommu_page_response()
1412 if (!group->domain) in iommu_group_get_for_dev()
1413 group->domain = dom; in iommu_group_get_for_dev()
1608 void iommu_set_fault_handler(struct iommu_domain *domain, in iommu_set_fault_handler() argument
1612 BUG_ON(!domain); in iommu_set_fault_handler()
1614 domain->handler = handler; in iommu_set_fault_handler()
1615 domain->handler_token = token; in iommu_set_fault_handler()
1622 struct iommu_domain *domain; in __iommu_domain_alloc() local
1627 domain = bus->iommu_ops->domain_alloc(type); in __iommu_domain_alloc()
1628 if (!domain) in __iommu_domain_alloc()
1631 domain->ops = bus->iommu_ops; in __iommu_domain_alloc()
1632 domain->type = type; in __iommu_domain_alloc()
1634 domain->pgsize_bitmap = bus->iommu_ops->pgsize_bitmap; in __iommu_domain_alloc()
1636 return domain; in __iommu_domain_alloc()
1645 void iommu_domain_free(struct iommu_domain *domain) in iommu_domain_free() argument
1647 domain->ops->domain_free(domain); in iommu_domain_free()
1651 static int __iommu_attach_device(struct iommu_domain *domain, in __iommu_attach_device() argument
1655 if ((domain->ops->is_attach_deferred != NULL) && in __iommu_attach_device()
1656 domain->ops->is_attach_deferred(domain, dev)) in __iommu_attach_device()
1659 if (unlikely(domain->ops->attach_dev == NULL)) in __iommu_attach_device()
1662 ret = domain->ops->attach_dev(domain, dev); in __iommu_attach_device()
1668 int iommu_attach_device(struct iommu_domain *domain, struct device *dev) in iommu_attach_device() argument
1686 ret = __iommu_attach_group(domain, group); in iommu_attach_device()
1696 static void __iommu_detach_device(struct iommu_domain *domain, in __iommu_detach_device() argument
1699 if ((domain->ops->is_attach_deferred != NULL) && in __iommu_detach_device()
1700 domain->ops->is_attach_deferred(domain, dev)) in __iommu_detach_device()
1703 if (unlikely(domain->ops->detach_dev == NULL)) in __iommu_detach_device()
1706 domain->ops->detach_dev(domain, dev); in __iommu_detach_device()
1710 void iommu_detach_device(struct iommu_domain *domain, struct device *dev) in iommu_detach_device() argument
1724 __iommu_detach_group(domain, group); in iommu_detach_device()
1734 struct iommu_domain *domain; in iommu_get_domain_for_dev() local
1741 domain = group->domain; in iommu_get_domain_for_dev()
1745 return domain; in iommu_get_domain_for_dev()
1770 struct iommu_domain *domain = data; in iommu_group_do_attach_device() local
1772 return __iommu_attach_device(domain, dev); in iommu_group_do_attach_device()
1775 static int __iommu_attach_group(struct iommu_domain *domain, in __iommu_attach_group() argument
1780 if (group->default_domain && group->domain != group->default_domain) in __iommu_attach_group()
1783 ret = __iommu_group_for_each_dev(group, domain, in __iommu_attach_group()
1786 group->domain = domain; in __iommu_attach_group()
1791 int iommu_attach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_attach_group() argument
1796 ret = __iommu_attach_group(domain, group); in iommu_attach_group()
1805 struct iommu_domain *domain = data; in iommu_group_do_detach_device() local
1807 __iommu_detach_device(domain, dev); in iommu_group_do_detach_device()
1812 static void __iommu_detach_group(struct iommu_domain *domain, in __iommu_detach_group() argument
1818 __iommu_group_for_each_dev(group, domain, in __iommu_detach_group()
1820 group->domain = NULL; in __iommu_detach_group()
1824 if (group->domain == group->default_domain) in __iommu_detach_group()
1833 group->domain = group->default_domain; in __iommu_detach_group()
1836 void iommu_detach_group(struct iommu_domain *domain, struct iommu_group *group) in iommu_detach_group() argument
1839 __iommu_detach_group(domain, group); in iommu_detach_group()
1844 phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) in iommu_iova_to_phys() argument
1846 if (unlikely(domain->ops->iova_to_phys == NULL)) in iommu_iova_to_phys()
1849 return domain->ops->iova_to_phys(domain, iova); in iommu_iova_to_phys()
1853 static size_t iommu_pgsize(struct iommu_domain *domain, in iommu_pgsize() argument
1873 pgsize &= domain->pgsize_bitmap; in iommu_pgsize()
1885 int iommu_map(struct iommu_domain *domain, unsigned long iova, in iommu_map() argument
1888 const struct iommu_ops *ops = domain->ops; in iommu_map()
1896 domain->pgsize_bitmap == 0UL)) in iommu_map()
1899 if (unlikely(!(domain->type & __IOMMU_DOMAIN_PAGING))) in iommu_map()
1903 min_pagesz = 1 << __ffs(domain->pgsize_bitmap); in iommu_map()
1919 size_t pgsize = iommu_pgsize(domain, iova | paddr, size); in iommu_map()
1924 ret = ops->map(domain, iova, paddr, pgsize, prot); in iommu_map()
1934 ops->iotlb_sync_map(domain); in iommu_map()
1938 iommu_unmap(domain, orig_iova, orig_size - size); in iommu_map()
1946 static size_t __iommu_unmap(struct iommu_domain *domain, in __iommu_unmap() argument
1950 const struct iommu_ops *ops = domain->ops; in __iommu_unmap()
1956 domain->pgsize_bitmap == 0UL)) in __iommu_unmap()
1959 if (unlikely(!(domain->type & __IOMMU_DOMAIN_PAGING))) in __iommu_unmap()
1963 min_pagesz = 1 << __ffs(domain->pgsize_bitmap); in __iommu_unmap()
1983 size_t pgsize = iommu_pgsize(domain, iova, size - unmapped); in __iommu_unmap()
1985 unmapped_page = ops->unmap(domain, iova, pgsize, iotlb_gather); in __iommu_unmap()
2000 size_t iommu_unmap(struct iommu_domain *domain, in iommu_unmap() argument
2007 ret = __iommu_unmap(domain, iova, size, &iotlb_gather); in iommu_unmap()
2008 iommu_tlb_sync(domain, &iotlb_gather); in iommu_unmap()
2014 size_t iommu_unmap_fast(struct iommu_domain *domain, in iommu_unmap_fast() argument
2018 return __iommu_unmap(domain, iova, size, iotlb_gather); in iommu_unmap_fast()
2022 size_t iommu_map_sg(struct iommu_domain *domain, unsigned long iova, in iommu_map_sg() argument
2034 ret = iommu_map(domain, iova + mapped, start, len, prot); in iommu_map_sg()
2057 iommu_unmap(domain, iova, mapped); in iommu_map_sg()
2064 int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, in iommu_domain_window_enable() argument
2067 if (unlikely(domain->ops->domain_window_enable == NULL)) in iommu_domain_window_enable()
2070 return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size, in iommu_domain_window_enable()
2075 void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr) in iommu_domain_window_disable() argument
2077 if (unlikely(domain->ops->domain_window_disable == NULL)) in iommu_domain_window_disable()
2080 return domain->ops->domain_window_disable(domain, wnd_nr); in iommu_domain_window_disable()
2108 int report_iommu_fault(struct iommu_domain *domain, struct device *dev, in report_iommu_fault() argument
2117 if (domain->handler) in report_iommu_fault()
2118 ret = domain->handler(domain, dev, iova, flags, in report_iommu_fault()
2119 domain->handler_token); in report_iommu_fault()
2138 int iommu_domain_get_attr(struct iommu_domain *domain, in iommu_domain_get_attr() argument
2148 *geometry = domain->geometry; in iommu_domain_get_attr()
2153 *paging = (domain->pgsize_bitmap != 0UL); in iommu_domain_get_attr()
2156 if (!domain->ops->domain_get_attr) in iommu_domain_get_attr()
2159 ret = domain->ops->domain_get_attr(domain, attr, data); in iommu_domain_get_attr()
2166 int iommu_domain_set_attr(struct iommu_domain *domain, in iommu_domain_set_attr() argument
2173 if (domain->ops->domain_set_attr == NULL) in iommu_domain_set_attr()
2176 ret = domain->ops->domain_set_attr(domain, attr, data); in iommu_domain_set_attr()
2221 struct iommu_domain *domain; in request_default_domain_for_dev() local
2242 domain = __iommu_domain_alloc(dev->bus, type); in request_default_domain_for_dev()
2243 if (!domain) in request_default_domain_for_dev()
2247 ret = __iommu_attach_group(domain, group); in request_default_domain_for_dev()
2249 iommu_domain_free(domain); in request_default_domain_for_dev()
2256 group->default_domain = domain; in request_default_domain_for_dev()
2440 int iommu_aux_attach_device(struct iommu_domain *domain, struct device *dev) in iommu_aux_attach_device() argument
2444 if (domain->ops->aux_attach_dev) in iommu_aux_attach_device()
2445 ret = domain->ops->aux_attach_dev(domain, dev); in iommu_aux_attach_device()
2454 void iommu_aux_detach_device(struct iommu_domain *domain, struct device *dev) in iommu_aux_detach_device() argument
2456 if (domain->ops->aux_detach_dev) { in iommu_aux_detach_device()
2457 domain->ops->aux_detach_dev(domain, dev); in iommu_aux_detach_device()
2463 int iommu_aux_get_pasid(struct iommu_domain *domain, struct device *dev) in iommu_aux_get_pasid() argument
2467 if (domain->ops->aux_get_pasid) in iommu_aux_get_pasid()
2468 ret = domain->ops->aux_get_pasid(domain, dev); in iommu_aux_get_pasid()