/freebsd/sys/arm64/iommu/ |
H A D | iommu.c | 83 iommu_domain_unmap_buf(struct iommu_domain *iodom, in iommu_domain_unmap_buf() argument 89 iommu = iodom->iommu; in iommu_domain_unmap_buf() 90 error = IOMMU_UNMAP(iommu->dev, iodom, entry->start, entry->end - in iommu_domain_unmap_buf() 96 iommu_domain_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in iommu_domain_map_buf() argument 113 iommu = iodom->iommu; in iommu_domain_map_buf() 114 error = IOMMU_MAP(iommu->dev, iodom, va, ma, entry->end - in iommu_domain_map_buf() 127 struct iommu_domain *iodom; in iommu_domain_alloc() local 129 iodom = IOMMU_DOMAIN_ALLOC(iommu->dev, iommu); in iommu_domain_alloc() 130 if (iodom == NULL) in iommu_domain_alloc() 133 KASSERT(iodom->end != 0, ("domain end is not set")); in iommu_domain_alloc() [all …]
|
H A D | smmu.c | 1623 smmu_unmap(device_t dev, struct iommu_domain *iodom, in smmu_unmap() argument 1633 domain = (struct smmu_domain *)iodom; in smmu_unmap() 1656 smmu_map(device_t dev, struct iommu_domain *iodom, in smmu_map() argument 1668 domain = (struct smmu_domain *)iodom; in smmu_map() 1690 struct iommu_domain *iodom; in smmu_domain_alloc() local 1730 iodom = &domain->iodom; in smmu_domain_alloc() 1736 iodom->end = MAXADDR_48BIT; in smmu_domain_alloc() 1738 return (iodom); in smmu_domain_alloc() 1742 smmu_domain_free(device_t dev, struct iommu_domain *iodom) in smmu_domain_free() argument 1750 domain = (struct smmu_domain *)iodom; in smmu_domain_free() [all …]
|
H A D | iommu_if.m | 68 struct iommu_domain *iodom; 80 struct iommu_domain *iodom; 98 struct iommu_domain *iodom; 121 struct iommu_domain *iodom;
|
/freebsd/sys/x86/iommu/ |
H A D | intel_ctx.c | 167 if ((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0 && in ctx_id_entry_init() 245 domain->iodom.iommu->unit, bus, slot, func, in domain_init_rmrr() 257 domain->iodom.iommu->unit, start, end); in domain_init_rmrr() 277 IOMMU_LOCK(domain->iodom.iommu); in domain_init_rmrr() 279 domain->iodom.flags |= IOMMU_DOMAIN_RMRR; in domain_init_rmrr() 280 IOMMU_UNLOCK(domain->iodom.iommu); in domain_init_rmrr() 288 domain->iodom.iommu->unit, start, end, in domain_init_rmrr() 313 struct iommu_domain *iodom; in dmar_reserve_pci_regions() local 319 iodom = DOM2IODOM(domain); in dmar_reserve_pci_regions() 328 error = iommu_gas_reserve_region_extend(iodom, base, limit + 1); in dmar_reserve_pci_regions() [all …]
|
H A D | amd_ctx.c | 100 iommu_qi_invalidate_locked(&domain->iodom, entry, true); in amdiommu_domain_unload_entry() 103 iommu_qi_invalidate_sync(&domain->iodom, entry->start, in amdiommu_domain_unload_entry() 117 amdiommu_domain_unload(struct iommu_domain *iodom, in amdiommu_domain_unload() argument 125 domain = IODOM2DOM(iodom); in amdiommu_domain_unload() 131 error = iodom->ops->unmap(iodom, entry, in amdiommu_domain_unload() 141 iommu_qi_invalidate_locked(&domain->iodom, entry, in amdiommu_domain_unload() 150 struct iommu_domain *iodom; in amdiommu_domain_destroy() local 153 iodom = DOM2IODOM(domain); in amdiommu_domain_destroy() 155 KASSERT(TAILQ_EMPTY(&domain->iodom.unload_entries), in amdiommu_domain_destroy() 157 KASSERT(LIST_EMPTY(&iodom->contexts), in amdiommu_domain_destroy() [all …]
|
H A D | amd_idpgtbl.c | 88 if (bus_get_domain(domain->iodom.iommu->dev, &dom) == 0) in amdiommu_domain_alloc_pgtbl() 98 domain->iodom.flags |= IOMMU_DOMAIN_PGTBL_INITED; in amdiommu_domain_alloc_pgtbl() 111 KASSERT((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0, in amdiommu_domain_free_pgtbl() 229 amdiommu_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in amdiommu_map_buf() argument 244 domain = IODOM2DOM(iodom); in amdiommu_map_buf() 246 KASSERT((iodom->flags & IOMMU_DOMAIN_IDMAP) == 0, in amdiommu_map_buf() 256 KASSERT(base < iodom->end, in amdiommu_map_buf() 258 (uintmax_t)size, (uintmax_t)iodom->end)); in amdiommu_map_buf() 259 KASSERT(base + size < iodom->end, in amdiommu_map_buf() 261 (uintmax_t)size, (uintmax_t)iodom->end)); in amdiommu_map_buf() [all …]
|
H A D | amd_iommu.h | 41 struct iommu_domain iodom; member 118 #define DOM2IODOM(domain) (&((domain)->iodom)) 120 __containerof((domain), struct amdiommu_domain, iodom) 130 #define AMDIOMMU_DOMAIN_LOCK(dom) mtx_lock(&(dom)->iodom.lock) 131 #define AMDIOMMU_DOMAIN_UNLOCK(dom) mtx_unlock(&(dom)->iodom.lock) 133 mtx_assert(&(dom)->iodom.lock, MA_OWNED) 214 void amdiommu_domain_unload(struct iommu_domain *iodom,
|
H A D | intel_dmar.h | 57 struct iommu_domain iodom; member 83 #define DMAR_DOMAIN_LOCK(dom) mtx_lock(&(dom)->iodom.lock) 84 #define DMAR_DOMAIN_UNLOCK(dom) mtx_unlock(&(dom)->iodom.lock) 85 #define DMAR_DOMAIN_ASSERT_LOCKED(dom) mtx_assert(&(dom)->iodom.lock, MA_OWNED) 91 #define DOM2IODOM(domain) (&((domain)->iodom)) 93 __containerof((domain), struct dmar_domain, iodom) 245 void dmar_domain_unload(struct iommu_domain *iodom,
|
H A D | intel_idpgtbl.c | 472 dmar_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in dmar_map_buf() argument 489 domain = IODOM2DOM(iodom); in dmar_map_buf() 492 KASSERT((iodom->flags & IOMMU_DOMAIN_IDMAP) == 0, in dmar_map_buf() 605 KASSERT((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) == 0, in dmar_unmap_buf_locked() 664 dmar_unmap_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in dmar_unmap_buf() argument 670 domain = IODOM2DOM(iodom); in dmar_unmap_buf() 702 domain->iodom.flags |= IOMMU_DOMAIN_PGTBL_INITED; in dmar_domain_alloc_pgtbl() 716 (domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0, in dmar_domain_free_pgtbl() 723 if ((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0) { in dmar_domain_free_pgtbl() 725 domain->iodom.flags &= ~IOMMU_DOMAIN_IDMAP; in dmar_domain_free_pgtbl()
|
H A D | x86_iommu.h | 78 void (*domain_unload)(struct iommu_domain *iodom, 199 void iommu_db_domain_print_contexts(struct iommu_domain *iodom); 200 void iommu_db_domain_print_mappings(struct iommu_domain *iodom);
|
H A D | iommu_utils.c | 272 iommu_domain_unload(struct iommu_domain *iodom, in iommu_domain_unload() argument 275 x86_iommu->domain_unload(iodom, entries, cansleep); in iommu_domain_unload() 808 iommu_db_domain_print_contexts(struct iommu_domain *iodom) in iommu_db_domain_print_contexts() argument 812 if (LIST_EMPTY(&iodom->contexts)) in iommu_db_domain_print_contexts() 816 LIST_FOREACH(ctx, &iodom->contexts, link) in iommu_db_domain_print_contexts() 821 iommu_db_domain_print_mappings(struct iommu_domain *iodom) in iommu_db_domain_print_mappings() argument 826 RB_FOREACH(entry, iommu_gas_entries_tree, &iodom->rb_root) { in iommu_db_domain_print_mappings() 834 TAILQ_FOREACH(entry, &iodom->unload_entries, dmamap_link) { in iommu_db_domain_print_mappings()
|
H A D | intel_drv.c | 1107 struct iommu_domain *iodom; in dmar_print_domain() local 1109 iodom = DOM2IODOM(domain); in dmar_print_domain() 1115 (uintmax_t)domain->iodom.end, domain->refs, domain->ctx_cnt, in dmar_print_domain() 1116 domain->iodom.flags, domain->pgtbl_obj, domain->iodom.entries_cnt); in dmar_print_domain() 1118 iommu_db_domain_print_contexts(iodom); in dmar_print_domain() 1121 iommu_db_domain_print_mappings(iodom); in dmar_print_domain() 1176 LIST_FOREACH(ctx, &domain->iodom.contexts, link) { in DB_SHOW_COMMAND_FLAGS()
|
H A D | amd_drv.c | 1112 struct iommu_domain *iodom; in amdiommu_print_domain() local 1114 iodom = DOM2IODOM(domain); in amdiommu_print_domain() 1120 (uintmax_t)domain->iodom.end, domain->refs, domain->ctx_cnt, in amdiommu_print_domain() 1121 domain->iodom.flags, domain->pgtbl_obj, domain->iodom.entries_cnt); in amdiommu_print_domain() 1123 iommu_db_domain_print_contexts(iodom); in amdiommu_print_domain() 1126 iommu_db_domain_print_mappings(iodom); in amdiommu_print_domain()
|
H A D | intel_qi.c | 193 domain = __containerof(idomain, struct dmar_domain, iodom); in dmar_qi_invalidate_emit()
|