aboutsummaryrefslogtreecommitdiff
path: root/sys/x86
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2015-05-29 09:17:59 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2015-05-29 09:17:59 +0000
commit35725a97c47fae72d54d802167423e6cbd7d613d (patch)
tree6e9c76ffcddee105d91a9ffa38bed19408040c56 /sys/x86
parentc06184c8148f698367bd890351b1b126798c3fd1 (diff)
downloadsrc-35725a97c47fae72d54d802167423e6cbd7d613d.tar.gz
src-35725a97c47fae72d54d802167423e6cbd7d613d.zip
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
Notes
Notes: svn path=/head/; revision=283692
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 ce7b041d24c1..293e2be32a9f 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));