diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2015-05-29 09:17:59 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2015-05-29 09:17:59 +0000 |
commit | 35725a97c47fae72d54d802167423e6cbd7d613d (patch) | |
tree | 6e9c76ffcddee105d91a9ffa38bed19408040c56 /sys/x86 | |
parent | c06184c8148f698367bd890351b1b126798c3fd1 (diff) | |
download | src-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.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 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)); |