Lines Matching full:unit
114 struct amdiommu_unit *unit; in amdiommu_map_msi_intr() local
134 unit = CTX2AMD(ctx); in amdiommu_map_msi_intr()
135 if (!unit->irte_enabled || cookie == -1) in amdiommu_map_msi_intr()
137 if (cookie >= unit->irte_nentries) { in amdiommu_map_msi_intr()
139 unit->iommu.unit, cookie, unit->irte_nentries); in amdiommu_map_msi_intr()
143 if (unit->irte_x2apic) { in amdiommu_map_msi_intr()
179 if (unit->irte_x2apic) in amdiommu_map_msi_intr()
184 AMDIOMMU_LOCK(unit); in amdiommu_map_msi_intr()
185 amdiommu_qi_invalidate_ir_locked(unit, rid); in amdiommu_map_msi_intr()
186 AMDIOMMU_UNLOCK(unit); in amdiommu_map_msi_intr()
223 struct amdiommu_unit *unit; in amdiommu_ir_find() local
247 error = amdiommu_find_unit_for_hpet(src, &unit, &rid, &dte, in amdiommu_ir_find()
251 error = amdiommu_find_unit(src, &unit, &rid, &dte, &edte, in amdiommu_ir_find()
255 ctx = amdiommu_get_ctx_for_dev(unit, src, in amdiommu_ir_find()
268 struct amdiommu_unit *unit; in amdiommu_ir_free_irte() local
272 unit = CTX2AMD(ctx); in amdiommu_ir_free_irte()
274 KASSERT(unit->irte_enabled, in amdiommu_ir_free_irte()
275 ("unmap: cookie %d ctx %p unit %p", cookie, ctx, unit)); in amdiommu_ir_free_irte()
276 KASSERT(cookie < unit->irte_nentries, in amdiommu_ir_free_irte()
277 ("bad cookie %u %u", cookie, unit->irte_nentries)); in amdiommu_ir_free_irte()
279 if (unit->irte_x2apic) { in amdiommu_ir_free_irte()
295 AMDIOMMU_LOCK(unit); in amdiommu_ir_free_irte()
296 amdiommu_qi_invalidate_ir_locked(unit, rid); in amdiommu_ir_free_irte()
297 AMDIOMMU_UNLOCK(unit); in amdiommu_ir_free_irte()
303 struct amdiommu_unit *unit; in amdiommu_ctx_init_irte() local
308 unit = CTX2AMD(ctx); in amdiommu_ctx_init_irte()
309 if (!unit->irte_enabled) in amdiommu_ctx_init_irte()
312 KASSERT(unit->irte_nentries > 0 && in amdiommu_ctx_init_irte()
313 unit->irte_nentries <= 2048 && in amdiommu_ctx_init_irte()
314 powerof2(unit->irte_nentries), in amdiommu_ctx_init_irte()
315 ("amdiommu%d: unit %p irte_nentries %u", unit->iommu.unit, in amdiommu_ctx_init_irte()
316 unit, unit->irte_nentries)); in amdiommu_ctx_init_irte()
318 if (bus_get_domain(unit->iommu.dev, &dom) != 0) in amdiommu_ctx_init_irte()
320 sz = unit->irte_nentries; in amdiommu_ctx_init_irte()
321 sz *= unit->irte_x2apic ? sizeof(struct amdiommu_irte_basic_vapic_x2) : in amdiommu_ctx_init_irte()
331 if (unit->irte_x2apic) in amdiommu_ctx_init_irte()
335 ctx->irtids = vmem_create("amdirt", 0, unit->irte_nentries, 1, 0, in amdiommu_ctx_init_irte()
346 struct amdiommu_unit *unit; in amdiommu_ctx_fini_irte() local
348 unit = CTX2AMD(ctx); in amdiommu_ctx_fini_irte()
349 if (!unit->irte_enabled) in amdiommu_ctx_fini_irte()
351 if (unit->irte_x2apic) in amdiommu_ctx_fini_irte()
359 amdiommu_init_irt(struct amdiommu_unit *unit) in amdiommu_init_irt() argument
363 SYSCTL_ADD_INT(&unit->iommu.sysctl_ctx, in amdiommu_init_irt()
364 SYSCTL_CHILDREN(device_get_sysctl_tree(unit->iommu.dev)), in amdiommu_init_irt()
365 OID_AUTO, "ir", CTLFLAG_RD, &unit->irte_enabled, 0, in amdiommu_init_irt()
371 unit->irte_enabled = enabled != 0; in amdiommu_init_irt()
372 if (!unit->irte_enabled) in amdiommu_init_irt()
382 unit->irte_nentries = nentries; in amdiommu_init_irt()
384 unit->irte_x2apic = x2apic_mode; in amdiommu_init_irt()
389 amdiommu_fini_irt(struct amdiommu_unit *unit) in amdiommu_fini_irt() argument