Lines Matching defs:dmar
130 sagaw = DMAR_CAP_SAGAW(domain->dmar->hw_cap);
139 device_printf(domain->dmar->iommu.dev,
191 cap_sps = DMAR_CAP_SPS(domain->dmar->hw_cap);
346 ("dmar%d: no RWBF", unit->iommu.unit));
467 dmar_barrier_enter(struct dmar_unit *dmar, u_int barrier_id)
471 DMAR_LOCK(dmar);
472 if ((dmar->barrier_flags & f_done) != 0) {
473 DMAR_UNLOCK(dmar);
477 if ((dmar->barrier_flags & f_inproc) != 0) {
478 while ((dmar->barrier_flags & f_inproc) != 0) {
479 dmar->barrier_flags |= f_wakeup;
480 msleep(&dmar->barrier_flags, &dmar->iommu.lock, 0,
483 KASSERT((dmar->barrier_flags & f_done) != 0,
484 ("dmar%d barrier %d missing done", dmar->iommu.unit,
486 DMAR_UNLOCK(dmar);
490 dmar->barrier_flags |= f_inproc;
491 DMAR_UNLOCK(dmar);
496 dmar_barrier_exit(struct dmar_unit *dmar, u_int barrier_id)
500 DMAR_ASSERT_LOCKED(dmar);
501 KASSERT((dmar->barrier_flags & (f_done | f_inproc)) == f_inproc,
502 ("dmar%d barrier %d missed entry", dmar->iommu.unit, barrier_id));
503 dmar->barrier_flags |= f_done;
504 if ((dmar->barrier_flags & f_wakeup) != 0)
505 wakeup(&dmar->barrier_flags);
506 dmar->barrier_flags &= ~(f_inproc | f_wakeup);
507 DMAR_UNLOCK(dmar);