svn commit: r308230 - head/sys/dev/ioat

Conrad E. Meyer cem at FreeBSD.org
Wed Nov 2 23:18:18 UTC 2016


Author: cem
Date: Wed Nov  2 23:18:16 2016
New Revision: 308230
URL: https://svnweb.freebsd.org/changeset/base/308230

Log:
  ioat(4): Read CHANSTS register for suspended/halted checks
  
  The device doesn't accurately update the CHANCMP address with the device state
  when the device is suspended or halted.  So, read the CHANSTS register to check
  for those states.
  
  We still need to read the CHANCMP address for the last completed descriptor.
  
  Sponsored by:	Dell EMC Isilon

Modified:
  head/sys/dev/ioat/ioat.c

Modified: head/sys/dev/ioat/ioat.c
==============================================================================
--- head/sys/dev/ioat/ioat.c	Wed Nov  2 22:33:37 2016	(r308229)
+++ head/sys/dev/ioat/ioat.c	Wed Nov  2 23:18:16 2016	(r308230)
@@ -747,6 +747,12 @@ out:
 		wakeup(&ioat->tail);
 	}
 
+	/*
+	 * The device doesn't seem to reliably push suspend/halt statuses to
+	 * the channel completion memory address, so poll the device register
+	 * here.
+	 */
+	comp_update = ioat_get_chansts(ioat) & IOAT_CHANSTS_STATUS;
 	if (!is_ioat_halted(comp_update) && !is_ioat_suspended(comp_update))
 		return;
 


More information about the svn-src-all mailing list