Explicitely enable queued invalidation completion interrupt when the
queue is started, not relying on the interrupt remaping method to happen. Also disable interrupts when shooting down the queue. Sponsored by: The FreeBSD Foundation MFC after: 1 week
This commit is contained in:
parent
c06184c814
commit
35725a97c4
@ -411,6 +411,7 @@ dmar_init_qi(struct dmar_unit *unit)
|
||||
ics = DMAR_ICS_IWC;
|
||||
dmar_write4(unit, DMAR_ICS_REG, ics);
|
||||
}
|
||||
dmar_enable_qi_intr(unit);
|
||||
DMAR_UNLOCK(unit);
|
||||
|
||||
return (0);
|
||||
@ -434,6 +435,7 @@ dmar_fini_qi(struct dmar_unit *unit)
|
||||
dmar_qi_advance_tail(unit);
|
||||
dmar_qi_wait_for_seq(unit, &gseq, false);
|
||||
/* only after the quisce, disable queue */
|
||||
dmar_disable_qi_intr(unit);
|
||||
dmar_disable_qi(unit);
|
||||
KASSERT(unit->inv_seq_waiters == 0,
|
||||
("dmar%d: waiters on disabled queue", unit->unit));
|
||||
|
Loading…
x
Reference in New Issue
Block a user