diff options
author | kib <kib@FreeBSD.org> | 2015-05-29 09:17:59 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-05-29 09:17:59 +0000 |
commit | 7856dd8122c785631fb89280aaf2b183f5a01b0a (patch) | |
tree | 6e9c76ffcddee105d91a9ffa38bed19408040c56 /sys/x86 | |
parent | e78026ed4c85b68858dd06f087f2b2252a19a8c6 (diff) | |
download | FreeBSD-src-7856dd8122c785631fb89280aaf2b183f5a01b0a.zip FreeBSD-src-7856dd8122c785631fb89280aaf2b183f5a01b0a.tar.gz |
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
Diffstat (limited to 'sys/x86')
-rw-r--r-- | sys/x86/iommu/intel_qi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/x86/iommu/intel_qi.c b/sys/x86/iommu/intel_qi.c index ce7b041..293e2be 100644 --- a/sys/x86/iommu/intel_qi.c +++ b/sys/x86/iommu/intel_qi.c @@ -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)); |