Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 May 2015 09:18:00 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283692 - head/sys/x86/iommu
Message-ID:  <201505290918.t4T9I0uM025094@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri May 29 09:17:59 2015
New Revision: 283692
URL: https://svnweb.freebsd.org/changeset/base/283692

Log:
  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

Modified:
  head/sys/x86/iommu/intel_qi.c

Modified: head/sys/x86/iommu/intel_qi.c
==============================================================================
--- head/sys/x86/iommu/intel_qi.c	Fri May 29 08:31:15 2015	(r283691)
+++ head/sys/x86/iommu/intel_qi.c	Fri May 29 09:17:59 2015	(r283692)
@@ -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));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505290918.t4T9I0uM025094>