summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2013-01-07 13:34:27 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-02-08 16:51:17 -0600
commit0ace043e6f4df6ce20d32524923e732a185853bf (patch)
tree49abd153d81dc2aa204cc64fed49f6ae243f4487 /src/kernel
parentcaf328ccd931de4ce4e4d285d1a4e5ddd151abb5 (diff)
downloadtalos-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.C8
-rw-r--r--src/kernel/syscall.C5
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. */
OpenPOWER on IntegriCloud