| /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 | 197 if (acpi_disabled("dmar")) in dmar_identify() 199 TUNABLE_INT_FETCH("hw.dmar.enable", &dmar_enable); in dmar_identify() 202 TUNABLE_INT_FETCH("hw.dmar.rmrr_enable", &dmar_rmrr_enable); in dmar_identify() 230 dmar_devs[i] = BUS_ADD_CHILD(parent, 1, "dmar", i); in dmar_identify() 239 "dmar%d: unable to alloc register window at 0x%08jx: error %d\n", in dmar_identify() 395 TUNABLE_UINT64_FETCH("hw.iommu.dmar.timeout", &timeout); in dmar_attach() 516 TUNABLE_INT_FETCH("hw.dmar.pmr.disable", &disable_pmr); in dmar_attach() 583 "dmar", 588 DRIVER_MODULE(dmar, acpi, dmar_driver, 0, 0); 589 MODULE_DEPEND(dmar, acp 961 struct dmar_unit *dmar; global() member 1073 struct dmar_unit *dmar; dmar_instantiate_rmrr_ctxs() local 1270 DB_SHOW_COMMAND(dmar,db_dmar_print) DB_SHOW_COMMAND() argument 1302 struct dmar_unit *dmar; dmar_find_method() local 1311 struct dmar_unit *dmar; dmar_get_x86_common() local [all...] |
| H A D | intel_idpgtbl.c | 199 dmar_pglvl_supported(domain->dmar, tbl->pglvl) && in dmar_get_idmap_pgtbl() 218 dmar_pglvl_supported(domain->dmar, tbl->pglvl) && in dmar_get_idmap_pgtbl() 263 unit = domain->dmar; in dmar_get_idmap_pgtbl() 383 dmar_flush_pte_to_ram(domain->dmar, ptep); in dmar_pgtbl_map_pte() 464 dmar_flush_pte_to_ram(domain->dmar, pte); in dmar_map_buf_locked() 492 unit = domain->dmar; in dmar_map_buf() 572 dmar_flush_pte_to_ram(domain->dmar, pte); in dmar_unmap_clear_pte() 690 unit = domain->dmar; in dmar_domain_alloc_pgtbl() 718 KASSERT((domain->dmar->hw_ecap & DMAR_ECAP_PT) != 0 && in dmar_domain_free_pgtbl() 768 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 | 1797 ACPI_TABLE_DMAR *dmar; in acpi_handle_dmar() local 1801 dmar = (ACPI_TABLE_DMAR *)sdp; in acpi_handle_dmar() 1802 printf("\tHost Address Width=%d\n", dmar->Width + 1); in acpi_handle_dmar() 1807 PRINTFLAG(dmar->Flags, INTR_REMAP); in acpi_handle_dmar() 1808 PRINTFLAG(dmar->Flags, X2APIC_OPT_OUT); in acpi_handle_dmar()
|