svn commit: r328110 - head/sys/kern

Wojciech Macek wma at FreeBSD.org
Thu Jan 18 07:38:56 UTC 2018


Author: wma
Date: Thu Jan 18 07:38:54 2018
New Revision: 328110
URL: https://svnweb.freebsd.org/changeset/base/328110

Log:
  KDB: restart only CPUs stopped by KDB
  
  There is a case when not all CPUs went online. In that situation,
  restart only APs which were operational before entering KDB.
  
  Created by:            Wojciech Macek <wma at semihalf.com>
  Obtained from:         Semihalf
  Reviewed by:           nwhitehorn
  Differential revision: https://reviews.freebsd.org/D13949
  Sponsored by:          QCM Technologies

Modified:
  head/sys/kern/subr_kdb.c

Modified: head/sys/kern/subr_kdb.c
==============================================================================
--- head/sys/kern/subr_kdb.c	Thu Jan 18 06:28:21 2018	(r328109)
+++ head/sys/kern/subr_kdb.c	Thu Jan 18 07:38:54 2018	(r328110)
@@ -673,6 +673,7 @@ kdb_trap(int type, int code, struct trapframe *tf)
 #ifdef SMP
 	if (!SCHEDULER_STOPPED()) {
 		other_cpus = all_cpus;
+		CPU_NAND(&other_cpus, &stopped_cpus);
 		CPU_CLR(PCPU_GET(cpuid), &other_cpus);
 		stop_cpus_hard(other_cpus);
 		did_stop_cpus = 1;
@@ -707,8 +708,9 @@ kdb_trap(int type, int code, struct trapframe *tf)
 	kdb_active--;
 
 #ifdef SMP
+	CPU_AND(&other_cpus, &stopped_cpus);
 	if (did_stop_cpus)
-		restart_cpus(stopped_cpus);
+		restart_cpus(other_cpus);
 #endif
 
 	intr_restore(intr);


More information about the svn-src-all mailing list