summaryrefslogtreecommitdiffstats
path: root/sys/x86
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2015-05-29 09:17:59 +0000
committerkib <kib@FreeBSD.org>2015-05-29 09:17:59 +0000
commit7856dd8122c785631fb89280aaf2b183f5a01b0a (patch)
tree6e9c76ffcddee105d91a9ffa38bed19408040c56 /sys/x86
parente78026ed4c85b68858dd06f087f2b2252a19a8c6 (diff)
downloadFreeBSD-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.c2
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));
OpenPOWER on IntegriCloud