| /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 1729 iodom = &domain->iodom; in smmu_domain_alloc() 1735 iodom->end = MAXADDR_48BIT; in smmu_domain_alloc() 1737 return (iodom); in smmu_domain_alloc() 1741 smmu_domain_free(device_t dev, struct iommu_domain *iodom) in smmu_domain_free() argument 1800 smmu_ctx_alloc(device_t dev,struct iommu_domain * iodom,device_t child,bool disabled) smmu_ctx_alloc() argument 1825 struct iommu_domain *iodom; smmu_ctx_init() local [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/riscv/iommu/ |
| H A D | iommu_frontend.c | 75 iommu_domain_unmap_buf(struct iommu_domain *iodom, in iommu_domain_unmap_buf() argument 81 iommu = iodom->iommu; in iommu_domain_unmap_buf() 82 error = IOMMU_UNMAP(iommu->dev, iodom, entry->start, entry->end - in iommu_domain_unmap_buf() 88 iommu_domain_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in iommu_domain_map_buf() argument 105 iommu = iodom->iommu; in iommu_domain_map_buf() 106 error = IOMMU_MAP(iommu->dev, iodom, va, ma, entry->end - in iommu_domain_map_buf() 119 struct iommu_domain *iodom; in iommu_domain_alloc() local 121 iodom = IOMMU_DOMAIN_ALLOC(iommu->dev, iommu); in iommu_domain_alloc() 122 if (iodom == NULL) in iommu_domain_alloc() 125 KASSERT(iodom->end != 0, ("domain end is not set")); in iommu_domain_alloc() [all …]
|
| H A D | iommu.c | 1051 IOMMU_DOMAIN_LOCK(&domain->iodom); in riscv_iommu_ctx_lookup() 1055 IOMMU_DOMAIN_UNLOCK(&domain->iodom); in riscv_iommu_ctx_lookup() 1059 IOMMU_DOMAIN_UNLOCK(&domain->iodom); in riscv_iommu_ctx_lookup() 1066 riscv_iommu_unmap(device_t dev, struct iommu_domain *iodom, in riscv_iommu_unmap() argument 1076 domain = (struct riscv_iommu_domain *)iodom; in riscv_iommu_unmap() 1099 riscv_iommu_map(device_t dev, struct iommu_domain *iodom, in riscv_iommu_map() argument 1111 domain = (struct riscv_iommu_domain *)iodom; in riscv_iommu_map() 1132 struct iommu_domain *iodom; in riscv_iommu_domain_alloc() local 1166 iodom = &domain->iodom; in riscv_iommu_domain_alloc() 1173 iodom->end = (1ULL << va_bits) - 1; in riscv_iommu_domain_alloc() [all …]
|
| H A D | iommu_if.m | 63 struct iommu_domain *iodom; 75 struct iommu_domain *iodom; 93 struct iommu_domain *iodom; 116 struct iommu_domain *iodom;
|
| H A D | iommu.h | 144 struct iommu_domain iodom; member
|
| /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 | 89 if (bus_get_domain(domain->iodom.iommu->dev, &dom) == 0) in amdiommu_domain_alloc_pgtbl() 99 domain->iodom.flags |= IOMMU_DOMAIN_PGTBL_INITED; in amdiommu_domain_alloc_pgtbl() 113 KASSERT((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0, in amdiommu_domain_free_pgtbl() 232 amdiommu_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in amdiommu_map_buf() argument 247 domain = IODOM2DOM(iodom); in amdiommu_map_buf() 249 KASSERT((iodom->flags & IOMMU_DOMAIN_IDMAP) == 0, in amdiommu_map_buf() 259 KASSERT(base < iodom->end, in amdiommu_map_buf() 261 (uintmax_t)size, (uintmax_t)iodom->end)); in amdiommu_map_buf() 262 KASSERT(base + size < iodom->end, in amdiommu_map_buf() 264 (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 | 474 dmar_map_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in dmar_map_buf() argument 491 domain = IODOM2DOM(iodom); in dmar_map_buf() 494 KASSERT((iodom->flags & IOMMU_DOMAIN_IDMAP) == 0, in dmar_map_buf() 607 KASSERT((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) == 0, in dmar_unmap_buf_locked() 666 dmar_unmap_buf(struct iommu_domain *iodom, struct iommu_map_entry *entry, in dmar_unmap_buf() argument 672 domain = IODOM2DOM(iodom); in dmar_unmap_buf() 704 domain->iodom.flags |= IOMMU_DOMAIN_PGTBL_INITED; in dmar_domain_alloc_pgtbl() 719 (domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0, in dmar_domain_free_pgtbl() 726 if ((domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0) { in dmar_domain_free_pgtbl() 728 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 | 1109 struct iommu_domain *iodom; 1111 iodom = DOM2IODOM(domain); 1117 (uintmax_t)domain->iodom.end, domain->refs, domain->ctx_cnt, in dmar_print_domain() 1118 domain->iodom.flags, domain->pgtbl_obj, domain->iodom.entries_cnt); in dmar_print_domain() 1120 iommu_db_domain_print_contexts(iodom); in dmar_print_domain() 1123 iommu_db_domain_print_mappings(iodom); in dmar_print_domain() 1178 LIST_FOREACH(ctx, &domain->iodom.contexts, link) { in DB_SHOW_COMMAND_FLAGS() 1116 struct iommu_domain *iodom; dmar_print_domain() local
|
| H A D | amd_drv.c | 1119 struct iommu_domain *iodom; in amdiommu_print_domain() 1121 iodom = DOM2IODOM(domain); in amdiommu_print_domain() 1127 (uintmax_t)domain->iodom.end, domain->refs, domain->ctx_cnt, in amdiommu_print_domain() 1128 domain->iodom.flags, domain->pgtbl_obj, domain->iodom.entries_cnt); in amdiommu_print_domain() 1130 iommu_db_domain_print_contexts(iodom); in amdiommu_print_domain() 1133 iommu_db_domain_print_mappings(iodom); in amdiommu_print_domain() 1120 struct iommu_domain *iodom; amdiommu_print_domain() local
|
| H A D | intel_qi.c | 193 domain = __containerof(idomain, struct dmar_domain, iodom); in dmar_qi_invalidate_emit()
|