Lines Matching refs:x86c
94 dmar_write4(unit, DMAR_IQT_REG, unit->x86c.inv_queue_tail); in dmar_qi_advance_tail()
108 if (bytes <= unit->x86c.inv_queue_avail) in dmar_qi_ensure()
113 unit->x86c.inv_queue_avail = head - unit->x86c.inv_queue_tail - in dmar_qi_ensure()
115 if (head <= unit->x86c.inv_queue_tail) in dmar_qi_ensure()
116 unit->x86c.inv_queue_avail += unit->x86c.inv_queue_size; in dmar_qi_ensure()
117 if (bytes <= unit->x86c.inv_queue_avail) in dmar_qi_ensure()
131 unit->x86c.inv_queue_full++; in dmar_qi_ensure()
134 unit->x86c.inv_queue_avail -= bytes; in dmar_qi_ensure()
143 atomic_store_64((uint64_t *)(unit->x86c.inv_queue + in dmar_qi_emit()
144 unit->x86c.inv_queue_tail), data1); in dmar_qi_emit()
146 *(volatile uint64_t *)(unit->x86c.inv_queue + in dmar_qi_emit()
147 unit->x86c.inv_queue_tail) = data1; in dmar_qi_emit()
149 unit->x86c.inv_queue_tail += DMAR_IQ_DESCR_SZ / 2; in dmar_qi_emit()
150 KASSERT(unit->x86c.inv_queue_tail <= unit->x86c.inv_queue_size, in dmar_qi_emit()
151 ("tail overflow 0x%x 0x%jx", unit->x86c.inv_queue_tail, in dmar_qi_emit()
152 (uintmax_t)unit->x86c.inv_queue_size)); in dmar_qi_emit()
153 unit->x86c.inv_queue_tail &= unit->x86c.inv_queue_size - 1; in dmar_qi_emit()
155 atomic_store_64((uint64_t *)(unit->x86c.inv_queue + in dmar_qi_emit()
156 unit->x86c.inv_queue_tail), data2); in dmar_qi_emit()
158 *(volatile uint64_t *)(unit->x86c.inv_queue + in dmar_qi_emit()
159 unit->x86c.inv_queue_tail) = data2; in dmar_qi_emit()
161 unit->x86c.inv_queue_tail += DMAR_IQ_DESCR_SZ / 2; in dmar_qi_emit()
162 KASSERT(unit->x86c.inv_queue_tail <= unit->x86c.inv_queue_size, in dmar_qi_emit()
163 ("tail overflow 0x%x 0x%jx", unit->x86c.inv_queue_tail, in dmar_qi_emit()
164 (uintmax_t)unit->x86c.inv_queue_size)); in dmar_qi_emit()
165 unit->x86c.inv_queue_tail &= unit->x86c.inv_queue_size - 1; in dmar_qi_emit()
181 memw ? unit->x86c.inv_waitd_seq_hw_phys : 0); in dmar_qi_emit_wait_descr()
218 unit->x86c.inv_seq_waiters++; in dmar_qi_invalidate_glob_impl()
269 unit->x86c.inv_seq_waiters++; in dmar_qi_invalidate_iec()
299 taskqueue_enqueue(unit->x86c.qi_taskqueue, &unit->x86c.qi_task); in dmar_qi_intr()
330 if (unit->x86c.inv_seq_waiters > 0) { in dmar_qi_task()
336 wakeup(&unit->x86c.inv_seq_waiters); in dmar_qi_task()
355 unit->x86c.qi_buf_maxsz = DMAR_IQA_QS_MAX; in dmar_init_qi()
356 unit->x86c.qi_cmd_sz = DMAR_IQ_DESCR_SZ; in dmar_init_qi()
363 qi_sz = ilog2(unit->x86c.inv_queue_size / PAGE_SIZE); in dmar_init_qi()
367 iqa = pmap_kextract((uintptr_t)unit->x86c.inv_queue); in dmar_init_qi()