From cb1f5614326054b025774dae1a37ad5bdf07902d Mon Sep 17 00:00:00 2001 From: Brian Stegmiller Date: Sun, 15 Nov 2015 10:52:28 -0600 Subject: HOSTBOOT: Support fused cores Change-Id: I2ad133be733ee9e41590b3b8bd60bd6abe69d1a9 RTC: 126786 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22054 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell Reviewed-by: A. Patrick Williams III --- src/include/kernel/cpumgr.H | 13 ++++++++----- src/include/kernel/misc.H | 13 ++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src/include/kernel') diff --git a/src/include/kernel/cpumgr.H b/src/include/kernel/cpumgr.H index 68f897278..30009da73 100644 --- a/src/include/kernel/cpumgr.H +++ b/src/include/kernel/cpumgr.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2010,2014 */ +/* Contributors Listed Below - COPYRIGHT 2010,2015 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -184,14 +186,15 @@ class CpuManager */ static const uint64_t WAKEUP_RPR_VALUE = 0x0001032021223F; - protected: - CpuManager(); - ~CpuManager() {} - /** @fn startCPU * Starts the requested CPU. Default of -1 implies current CPU. */ void startCPU(ssize_t i = -1); + + protected: + CpuManager(); + ~CpuManager() {} + void startSlaveCPU(cpu_t*); private: diff --git a/src/include/kernel/misc.H b/src/include/kernel/misc.H index 2d24c9d85..802df9090 100644 --- a/src/include/kernel/misc.H +++ b/src/include/kernel/misc.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2011,2014 */ +/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -93,9 +95,11 @@ namespace KernelMisc * * @param i_caller - Task calling cpu_master_winkle to be * restored after winkle is complete. + * @param i_fusedCores - true if using 8 threaded cores */ - WinkleCore(task_t* i_caller) : - iv_caller(i_caller), iv_timebase(0) {}; + WinkleCore(task_t* i_caller, bool i_fusedCores) : + iv_caller(i_caller), iv_timebase(0), + iv_fusedCores(i_fusedCores) {}; void masterPreWork(); void activeMainWork(); @@ -107,6 +111,9 @@ namespace KernelMisc task_t* iv_caller; /** Current time-base value for restore after winkle. */ uint64_t iv_timebase; + /** Fused core has 8 threads per core (normal is 4). */ + /** So when winkling core, we need a 2nd core started. */ + bool iv_fusedCores; }; /** @class WinkleAll -- cgit v1.2.1