Lines Matching refs:dmar
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()
480 msleep(&dmar->barrier_flags, &dmar->iommu.lock, 0, in dmar_barrier_enter()
483 KASSERT((dmar->barrier_flags & f_done) != 0, in dmar_barrier_enter()
484 ("dmar%d barrier %d missing done", dmar->iommu.unit, in dmar_barrier_enter()
486 DMAR_UNLOCK(dmar); in dmar_barrier_enter()
490 dmar->barrier_flags |= f_inproc; in dmar_barrier_enter()
491 DMAR_UNLOCK(dmar); in dmar_barrier_enter()
496 dmar_barrier_exit(struct dmar_unit *dmar, u_int barrier_id) in dmar_barrier_exit() argument
500 DMAR_ASSERT_LOCKED(dmar); in dmar_barrier_exit()
501 KASSERT((dmar->barrier_flags & (f_done | f_inproc)) == f_inproc, in dmar_barrier_exit()
502 ("dmar%d barrier %d missed entry", dmar->iommu.unit, barrier_id)); in dmar_barrier_exit()
503 dmar->barrier_flags |= f_done; in dmar_barrier_exit()
504 if ((dmar->barrier_flags & f_wakeup) != 0) in dmar_barrier_exit()
505 wakeup(&dmar->barrier_flags); in dmar_barrier_exit()
506 dmar->barrier_flags &= ~(f_inproc | f_wakeup); in dmar_barrier_exit()
507 DMAR_UNLOCK(dmar); in dmar_barrier_exit()