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
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to