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@semihalf.com> Obtained from: Semihalf Reviewed by: nwhitehorn Differential revision: https://reviews.freebsd.org/D13949 Sponsored by: QCM Technologies
This commit is contained in:
parent
e70f868f17
commit
5b3e8b0725
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328110
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user