summaryrefslogtreecommitdiffstats
path: root/src/kernel/cpumgr.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/cpumgr.C')
-rw-r--r--src/kernel/cpumgr.C8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C
index eb1ad3ac2..33290ebf1 100644
--- a/src/kernel/cpumgr.C
+++ b/src/kernel/cpumgr.C
@@ -212,12 +212,14 @@ void CpuManager::executePeriodics(cpu_t * i_cpu)
{
// set up barrier based on # cpus cv_barrier;
// TODO whatif other cpus become active?
- isync();
- cv_barrier.init(cv_cpuCount);
+ isync(); // Ensure all instructions complete before this point, so
+ // we don't get a stale shutdown_requested.
if(!cv_shutdown_requested)
{
+ cv_barrier.init(cv_cpuCount);
+ lwsync(); // Ensure barrier init is globally visible before
+ // setting defrag = true.
cv_defrag = true;
- lwsync();
}
}
}
OpenPOWER on IntegriCloud