svn commit: r339662 - in head/sys: kern net

Eric Joyner erj at FreeBSD.org
Tue Oct 23 17:06:37 UTC 2018


Author: erj
Date: Tue Oct 23 17:06:36 2018
New Revision: 339662
URL: https://svnweb.freebsd.org/changeset/base/339662

Log:
  Revert r339634.
  
  That commit is causing kernel panics in em(4), so this will be reverted
  until those are fixed.
  
  Reported by:	ae@, pho@, et al
  Sponsored by:	Intel Corporation

Modified:
  head/sys/kern/subr_gtaskqueue.c
  head/sys/net/iflib.c

Modified: head/sys/kern/subr_gtaskqueue.c
==============================================================================
--- head/sys/kern/subr_gtaskqueue.c	Tue Oct 23 16:35:58 2018	(r339661)
+++ head/sys/kern/subr_gtaskqueue.c	Tue Oct 23 17:06:36 2018	(r339662)
@@ -812,7 +812,6 @@ taskqgroup_detach(struct taskqgroup *qgroup, struct gr
 	qgroup->tqg_queue[i].tgc_cnt--;
 	LIST_REMOVE(gtask, gt_list);
 	mtx_unlock(&qgroup->tqg_lock);
-	gtaskqueue_drain(gtask->gt_taskqueue, &gtask->gt_task);
 	gtask->gt_taskqueue = NULL;
 }
 

Modified: head/sys/net/iflib.c
==============================================================================
--- head/sys/net/iflib.c	Tue Oct 23 16:35:58 2018	(r339661)
+++ head/sys/net/iflib.c	Tue Oct 23 17:06:36 2018	(r339662)
@@ -2279,8 +2279,8 @@ iflib_timer(void *arg)
 	STATE_LOCK(ctx);
 	if_setdrvflagbits(ctx->ifc_ifp, IFF_DRV_OACTIVE, IFF_DRV_RUNNING);
 	ctx->ifc_flags |= (IFC_DO_WATCHDOG|IFC_DO_RESET);
-	STATE_UNLOCK(ctx);
 	iflib_admin_intr_deferred(ctx);
+	STATE_UNLOCK(ctx);
 }
 
 static void
@@ -2802,8 +2802,8 @@ iflib_rxeof(iflib_rxq_t rxq, qidx_t budget)
 err:
 	STATE_LOCK(ctx);
 	ctx->ifc_flags |= IFC_DO_RESET;
-	STATE_UNLOCK(ctx);
 	iflib_admin_intr_deferred(ctx);
+	STATE_UNLOCK(ctx);
 	return (false);
 }
 
@@ -5973,10 +5973,7 @@ iflib_admin_intr_deferred(if_ctx_t ctx)
 {
 #ifdef INVARIANTS
 	struct grouptask *gtask;
-#endif
-	if (iflib_in_detach(ctx))
-		return;
-#ifdef INVARIANTS
+
 	gtask = &ctx->ifc_admin_task;
 	MPASS(gtask != NULL && gtask->gt_taskqueue != NULL);
 #endif
@@ -5987,8 +5984,6 @@ iflib_admin_intr_deferred(if_ctx_t ctx)
 void
 iflib_iov_intr_deferred(if_ctx_t ctx)
 {
-	if (iflib_in_detach(ctx))
-		return;
 
 	GROUPTASK_ENQUEUE(&ctx->ifc_vflr_task);
 }


More information about the svn-src-head mailing list