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
This commit is contained in:
sbruno 2017-01-16 16:58:12 +00:00
parent 10e44b52b7
commit bfc26a0c94
2 changed files with 2 additions and 1 deletions

View File

@ -646,6 +646,7 @@ taskqgroup_attach(struct taskqgroup *qgroup, struct grouptask *gtask,
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;

View File

@ -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