svn commit: r312293 - in head/sys: kern sys

Sean Bruno sbruno at FreeBSD.org
Mon Jan 16 16:58:14 UTC 2017


Author: sbruno
Date: Mon Jan 16 16:58:12 2017
New Revision: 312293
URL: https://svnweb.freebsd.org/changeset/base/312293

Log:
  Change startup order for the no EARLY_AP_STARTUP case to initialize
  gtaskqueue bits at SI_SUB_INIT_IF instead of waiting until SI_SUB_SMP
  which is far too late.
  
  Add an assertion in taskqgroup_attach() to catch startup initialization
  failures in the future.
  
  Reported by:	kib bde

Modified:
  head/sys/kern/subr_gtaskqueue.c
  head/sys/sys/gtaskqueue.h

Modified: head/sys/kern/subr_gtaskqueue.c
==============================================================================
--- head/sys/kern/subr_gtaskqueue.c	Mon Jan 16 16:44:13 2017	(r312292)
+++ head/sys/kern/subr_gtaskqueue.c	Mon Jan 16 16:58:12 2017	(r312293)
@@ -646,6 +646,7 @@ taskqgroup_attach(struct taskqgroup *qgr
 	qid = taskqgroup_find(qgroup, uniq);
 	qgroup->tqg_queue[qid].tgc_cnt++;
 	LIST_INSERT_HEAD(&qgroup->tqg_queue[qid].tgc_tasks, gtask, gt_list);
+	MPASS(qgroup->tqg_queue[qid].tgc_taskq != NULL);
 	gtask->gt_taskqueue = qgroup->tqg_queue[qid].tgc_taskq;
 	if (irq != -1 && (smp_started || mp_ncpus == 1)) {
 		gtask->gt_cpu = qgroup->tqg_queue[qid].tgc_cpu;

Modified: head/sys/sys/gtaskqueue.h
==============================================================================
--- head/sys/sys/gtaskqueue.h	Mon Jan 16 16:44:13 2017	(r312292)
+++ head/sys/sys/gtaskqueue.h	Mon Jan 16 16:58:12 2017	(r312293)
@@ -115,7 +115,7 @@ taskqgroup_adjust_##name(void *arg)					
 	taskqgroup_adjust(qgroup_##name, (cnt), (stride));		\
 }									\
 									\
-SYSINIT(taskqgroup_adj_##name, SI_SUB_SMP, SI_ORDER_ANY,		\
+SYSINIT(taskqgroup_adj_##name, SI_SUB_INIT_IF, SI_ORDER_ANY,		\
 	taskqgroup_adjust_##name, NULL);				\
 									\
 struct __hack


More information about the svn-src-all mailing list