diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2013-04-01 10:29:05 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-04-08 11:06:46 -0500 |
commit | 321ce4299b31ad8f54172079b32d20ead5d24a30 (patch) | |
tree | 23434a7d15571ce855a183fc6fcea94ad18d740a /src/kernel/syscall.C | |
parent | 2c5c5d4f7107fd6b31809677135e0418970461a0 (diff) | |
download | blackbird-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.C | 15 |
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); |