Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2017 16:58:13 +0000 (UTC)
From:      Sean Bruno <sbruno@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r312293 - in head/sys: kern sys
Message-ID:  <201701161658.v0GGwD0Z050066@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



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