diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2013-01-07 13:34:27 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-02-08 16:51:17 -0600 |
commit | 0ace043e6f4df6ce20d32524923e732a185853bf (patch) | |
tree | 49abd153d81dc2aa204cc64fed49f6ae243f4487 /src/kernel | |
parent | caf328ccd931de4ce4e4d285d1a4e5ddd151abb5 (diff) | |
download | talos-hostboot-0ace043e6f4df6ce20d32524923e732a185853bf.tar.gz talos-hostboot-0ace043e6f4df6ce20d32524923e732a185853bf.zip |
Support for less than 8 threads per core
Modified anywhere that we enable non-master threads to only
touch the threads that we are told to update.
Change-Id: I5b764e51d85a5c663ac76164e9465831ef0c167c
RTC: 48808
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2877
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel')
-rw-r--r-- | src/kernel/cpumgr.C | 8 | ||||
-rw-r--r-- | src/kernel/syscall.C | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/kernel/cpumgr.C b/src/kernel/cpumgr.C index 954232b2d..436930de7 100644 --- a/src/kernel/cpumgr.C +++ b/src/kernel/cpumgr.C @@ -381,7 +381,7 @@ void CpuManager::executePeriodics(cpu_t * i_cpu) } -int CpuManager::startCore(uint64_t pir) +int CpuManager::startCore(uint64_t pir,uint64_t i_threads) { size_t threads = getThreadCount(); pir = pir & ~(threads-1); @@ -394,7 +394,11 @@ int CpuManager::startCore(uint64_t pir) for(size_t i = 0; i < threads; i++) { - Singleton<CpuManager>::instance().startCPU(pir + i); + // Only start the threads we were told to start + if( i_threads & (0x8000000000000000 >> i) ) + { + Singleton<CpuManager>::instance().startCPU(pir + i); + } } __sync_synchronize(); diff --git a/src/kernel/syscall.C b/src/kernel/syscall.C index 9ef1e36b3..615a22e8f 100644 --- a/src/kernel/syscall.C +++ b/src/kernel/syscall.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2010,2012 */ +/* COPYRIGHT International Business Machines Corp. 2010,2013 */ /* */ /* p1 */ /* */ @@ -643,7 +643,8 @@ namespace Systemcalls void CpuStartCore(task_t *t) { TASK_SETRTN(t, - CpuManager::startCore(static_cast<uint64_t>(TASK_GETARG0(t)))); + CpuManager::startCore(static_cast<uint64_t>(TASK_GETARG0(t)), + static_cast<uint64_t>(TASK_GETARG1(t)))); }; /** Read SPR values. */ |