Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Dec 2016 17:05:09 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r310981 - stable/11/sys/kern
Message-ID:  <201612311705.uBVH59Nh093720@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Sat Dec 31 17:05:09 2016
New Revision: 310981
URL: https://svnweb.freebsd.org/changeset/base/310981

Log:
  MFC 310336:
  Don't spin in pause() during early boot for kthreads other than thread0.
  
  pause() uses a spin loop to simulate a sleep during early boot.  However,
  we only need this for thread0 to get far enough in the boot process to
  enable timers (at which point pause() can sleep).  For other kthreads,
  sleeping in pause() is ok as the callout will be scheduled and will
  eventually fire once thread0 initializes timers.

Modified:
  stable/11/sys/kern/kern_synch.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/kern_synch.c
==============================================================================
--- stable/11/sys/kern/kern_synch.c	Sat Dec 31 16:57:05 2016	(r310980)
+++ stable/11/sys/kern/kern_synch.c	Sat Dec 31 17:05:09 2016	(r310981)
@@ -321,7 +321,8 @@ pause_sbt(const char *wmesg, sbintime_t 
 	if (sbt == 0)
 		sbt = tick_sbt;
 
-	if (cold || kdb_active || SCHEDULER_STOPPED()) {
+	if ((cold && curthread == &thread0) || kdb_active ||
+	    SCHEDULER_STOPPED()) {
 		/*
 		 * We delay one second at a time to avoid overflowing the
 		 * system specific DELAY() function(s):



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