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