Page MenuHomeFreeBSD

D9786.diff
No OneTemporary

D9786.diff

Index: head/sys/x86/x86/mp_x86.c
===================================================================
--- head/sys/x86/x86/mp_x86.c
+++ head/sys/x86/x86/mp_x86.c
@@ -45,6 +45,7 @@
#ifdef GPROF
#include <sys/gmon.h>
#endif
+#include <sys/kdb.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
#include <sys/lock.h>
@@ -1269,6 +1270,12 @@
CPU_CLR_ATOMIC(cpu, &started_cpus);
CPU_CLR_ATOMIC(cpu, &stopped_cpus);
+ /*
+ * We don't broadcast TLB invalidations to other CPUs when they are
+ * stopped. Hence, we clear the TLB before resuming.
+ */
+ invltlb_glob();
+
#if defined(__amd64__) && defined(DDB)
amd64_db_resume_dbreg();
#endif
@@ -1427,6 +1434,10 @@
uint32_t generation;
int cpu;
+ /* It is not necessary to signal other CPUs while in the debugger. */
+ if (kdb_active || panicstr != NULL)
+ return;
+
/*
* Check for other cpus. Return if none.
*/

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 4:05 AM (12 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31886925
Default Alt Text
D9786.diff (886 B)

Event Timeline