summaryrefslogtreecommitdiffstats
path: root/src/kernel/syscall.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2013-04-01 10:29:05 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-04-08 11:06:46 -0500
commit321ce4299b31ad8f54172079b32d20ead5d24a30 (patch)
tree23434a7d15571ce855a183fc6fcea94ad18d740a /src/kernel/syscall.C
parent2c5c5d4f7107fd6b31809677135e0418970461a0 (diff)
downloadblackbird-hostboot-321ce4299b31ad8f54172079b32d20ead5d24a30.tar.gz
blackbird-hostboot-321ce4299b31ad8f54172079b32d20ead5d24a30.zip
Allow winkle of all threads for multi-drawer add.
RTC: 63124 Change-Id: I1ad1d6bdf6a2848b686b25504fabddddb701d440 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3813 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Michael Baiocchi <baiocchi@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/syscall.C')
-rw-r--r--src/kernel/syscall.C15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C
index 71bd1a995..985d9c0ab 100644
--- a/src/kernel/syscall.C
+++ b/src/kernel/syscall.C
@@ -700,12 +700,13 @@ namespace Systemcalls
}
};
- /** Winkle all the threads so that the runtime SLW image can be loaded. */
+ /** Winkle all the threads. */
void CpuWinkle(task_t *t)
{
cpu_t* cpu = CpuManager::getCurrentCPU();
- if ((CpuManager::getCpuCount() > CpuManager::getThreadCount()) ||
+ if ((WINKLE_SCOPE_MASTER == TASK_GETARG0(t) &&
+ (CpuManager::getCpuCount() > CpuManager::getThreadCount())) ||
(!cpu->master))
{
TASK_SETRTN(t, -EDEADLK);
@@ -713,7 +714,15 @@ namespace Systemcalls
else
{
TASK_SETRTN(t, 0);
- KernelMisc::WinkleCore* deferred = new KernelMisc::WinkleCore(t);
+ DeferredWork* deferred = NULL;
+ if (WINKLE_SCOPE_MASTER == TASK_GETARG0(t))
+ {
+ deferred = new KernelMisc::WinkleCore(t);
+ }
+ else
+ {
+ deferred = new KernelMisc::WinkleAll(t);
+ }
t->state = TASK_STATE_BLOCK_USRSPACE;
t->state_info = deferred;
DeferredQueue::insert(deferred);
OpenPOWER on IntegriCloud