/freebsd/sys/x86/iommu/ |
H A D | intel_ctx.c | 74 static void dmar_unref_domain_locked(struct dmar_unit *dmar, 78 static void dmar_free_ctx_locked(struct dmar_unit *dmar, struct dmar_ctx *ctx); 81 dmar_ensure_ctx_page(struct dmar_unit *dmar, int bus) in dmar_ensure_ctx_page() argument 90 ctxm = iommu_pgalloc(dmar->ctx_obj, 1 + bus, IOMMU_PGF_NOALLOC); in dmar_ensure_ctx_page() 101 ctxm = iommu_pgalloc(dmar->ctx_obj, 1 + bus, IOMMU_PGF_ZERO | in dmar_ensure_ctx_page() 103 re = iommu_map_pgtbl(dmar->ctx_obj, 0, IOMMU_PGF_NOALLOC, &sf); in dmar_ensure_ctx_page() 107 dmar_flush_root_to_ram(dmar, re); in dmar_ensure_ctx_page() 115 struct dmar_unit *dmar; in dmar_map_ctx_entry() local 118 dmar = CTX2DMAR(ctx); in dmar_map_ctx_entry() 120 ctxp = iommu_map_pgtbl(dmar->ctx_obj, 1 + PCI_RID2BUS(ctx->context.rid), in dmar_map_ctx_entry() [all …]
|
H A D | intel_dmar.h | 66 struct dmar_unit *dmar; /* (c) */ member 87 #define DMAR2IOMMU(dmar) (&((dmar)->iommu)) argument 88 #define IOMMU2DMAR(dmar) \ argument 89 __containerof((dmar), struct dmar_unit, iommu) 100 #define CTX2DMAR(ctx) (CTX2DOM(ctx)->dmar) 101 #define DOM2DMAR(domain) ((domain)->dmar) 150 #define DMAR_LOCK(dmar) mtx_lock(&DMAR2IOMMU(dmar)->lock) argument 151 #define DMAR_UNLOCK(dmar) mtx_unlock(&DMAR2IOMMU(dmar)->lock) argument 152 #define DMAR_ASSERT_LOCKED(dmar) mtx_assert(&DMAR2IOMMU(dmar)->lock, MA_OWNED) argument 154 #define DMAR_FAULT_LOCK(dmar) mtx_lock_spin(&(dmar)->fault_lock) argument [all …]
|
H A D | intel_utils.c | 130 sagaw = DMAR_CAP_SAGAW(domain->dmar->hw_cap); in domain_set_agaw() 139 device_printf(domain->dmar->iommu.dev, in domain_set_agaw() 191 cap_sps = DMAR_CAP_SPS(domain->dmar->hw_cap); in domain_is_sp_lvl() 467 dmar_barrier_enter(struct dmar_unit *dmar, u_int barrier_id) in dmar_barrier_enter() argument 471 DMAR_LOCK(dmar); in dmar_barrier_enter() 472 if ((dmar->barrier_flags & f_done) != 0) { in dmar_barrier_enter() 473 DMAR_UNLOCK(dmar); in dmar_barrier_enter() 477 if ((dmar->barrier_flags & f_inproc) != 0) { in dmar_barrier_enter() 478 while ((dmar->barrier_flags & f_inproc) != 0) { in dmar_barrier_enter() 479 dmar->barrier_flags |= f_wakeup; in dmar_barrier_enter() [all …]
|
H A D | intel_quirks.c | 88 dmar_match_quirks(struct dmar_unit *dmar, in dmar_match_quirks() argument 111 device_printf(dmar->iommu.dev, in dmar_match_quirks() 115 nb_quirk->quirk(dmar, nb); in dmar_match_quirks() 119 device_printf(dmar->iommu.dev, in dmar_match_quirks() 139 device_printf(dmar->iommu.dev, in dmar_match_quirks() 143 cpu_quirk->quirk(dmar); in dmar_match_quirks() 225 struct dmar_unit *dmar; in dmar_quirks_pre_use() local 227 dmar = IOMMU2DMAR(unit); in dmar_quirks_pre_use() 229 if (!dmar_barrier_enter(dmar, DMAR_BARRIER_USEQ)) in dmar_quirks_pre_use() 231 DMAR_LOCK(dmar); in dmar_quirks_pre_use() [all …]
|
H A D | intel_drv.c | 586 DRIVER_MODULE(dmar, acpi, dmar_driver, 0, 0); 587 MODULE_DEPEND(dmar, acpi, 1, 1, 1); 959 struct dmar_unit *dmar; member 1004 if (resmem->Segment != iria->dmar->segment) in dmar_inst_rmrr_iter() 1027 iria->dmar->iommu.unit, in dmar_inst_rmrr_iter() 1039 if (iria->dmar != unit) in dmar_inst_rmrr_iter() 1041 dmar_get_ctx_for_devpath(iria->dmar, rid, in dmar_inst_rmrr_iter() 1047 if (iria->dmar != unit) in dmar_inst_rmrr_iter() 1049 iommu_instantiate_ctx(&(iria)->dmar->iommu, in dmar_inst_rmrr_iter() 1064 struct dmar_unit *dmar; in dmar_instantiate_rmrr_ctxs() local [all …]
|
H A D | intel_idpgtbl.c | 197 dmar_pglvl_supported(domain->dmar, tbl->pglvl) && in dmar_get_idmap_pgtbl() 216 dmar_pglvl_supported(domain->dmar, tbl->pglvl) && in dmar_get_idmap_pgtbl() 261 unit = domain->dmar; in dmar_get_idmap_pgtbl() 381 dmar_flush_pte_to_ram(domain->dmar, ptep); in dmar_pgtbl_map_pte() 462 dmar_flush_pte_to_ram(domain->dmar, pte); in dmar_map_buf_locked() 490 unit = domain->dmar; in dmar_map_buf() 570 dmar_flush_pte_to_ram(domain->dmar, pte); in dmar_unmap_clear_pte() 688 unit = domain->dmar; in dmar_domain_alloc_pgtbl() 715 KASSERT((domain->dmar->hw_ecap & DMAR_ECAP_PT) != 0 && in dmar_domain_free_pgtbl() 764 unit = domain->dmar; in dmar_flush_iotlb_sync()
|
H A D | intel_qi.c | 194 unit = domain->dmar; in dmar_qi_invalidate_emit()
|
H A D | iommu_utils.c | 190 SYSCTL_NODE(_hw_iommu, OID_AUTO, dmar, CTLFLAG_RD | CTLFLAG_MPSAFE,
|
/freebsd/sys/amd64/vmm/intel/ |
H A D | vtd.c | 310 ACPI_TABLE_DMAR *dmar; in vtd_init() local 334 status = AcpiGetTable(ACPI_SIG_DMAR, 0, (ACPI_TABLE_HEADER **)&dmar); in vtd_init() 338 end = (char *)dmar + dmar->Header.Length; in vtd_init() 339 remaining = dmar->Header.Length - sizeof(ACPI_TABLE_DMAR); in vtd_init()
|
/freebsd/tools/tools/dmardump/ |
H A D | dmardump.c | 225 ACPI_TABLE_DMAR *dmar; in acpi_handle_dmar() local 227 dmar = (ACPI_TABLE_DMAR *)sdp; in acpi_handle_dmar()
|
/freebsd/usr.sbin/acpi/acpidump/ |
H A D | acpi.c | 1617 ACPI_TABLE_DMAR *dmar; in acpi_handle_dmar() local 1621 dmar = (ACPI_TABLE_DMAR *)sdp; in acpi_handle_dmar() 1622 printf("\tHost Address Width=%d\n", dmar->Width + 1); in acpi_handle_dmar() 1627 PRINTFLAG(dmar->Flags, INTR_REMAP); in acpi_handle_dmar() 1628 PRINTFLAG(dmar->Flags, X2APIC_OPT_OUT); in acpi_handle_dmar()
|