diff options
author | Bill Hoffa <wghoffa@us.ibm.com> | 2018-07-23 10:34:32 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-07-24 09:39:23 -0500 |
commit | 331b4bff6cb94d3578243089c2adcf3908058d63 (patch) | |
tree | 22d542cc21702eea675e2f8fa278ca35edf164b4 /src/kernel/workitem.C | |
parent | 923ed59ce8a7703b5d36abee3ada0fd4248a6178 (diff) | |
download | talos-hostboot-331b4bff6cb94d3578243089c2adcf3908058d63.tar.gz talos-hostboot-331b4bff6cb94d3578243089c2adcf3908058d63.zip |
Restore Timebase on Master Core Threads 1-3 after Sleep/Winkle
Change-Id: I329dd64345f2474cb0dad628ccc2244d85be86c2
CQ: SW429364
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63147
Reviewed-by: ILYA SMIRNOV <ismirno@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/kernel/workitem.C')
-rw-r--r-- | src/kernel/workitem.C | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/kernel/workitem.C b/src/kernel/workitem.C index 0edf83083..53f91cb3b 100644 --- a/src/kernel/workitem.C +++ b/src/kernel/workitem.C @@ -27,6 +27,7 @@ #include <kernel/workitem.H> #include <kernel/console.H> #include <kernel/intmsghandler.H> +#include <kernel/cpumgr.H> //Define the desired behavior for a CPU core/thread // wakeup scenario @@ -40,3 +41,17 @@ void CpuWakeupDoorbellWorkItem::operator() (void) InterruptMsgHdlr::sendThreadWakeupMsg(pir); return; } + +void CpuTbRestoreDoorbellWorkItem::operator() (void) +{ + size_t pir = getPIR(); + cpu_t *l_cpu = CpuManager::getCpu(pir); + + uint64_t l_restore_tb = l_cpu->cpu_restore_tb; + printkd("pir:%ld tb:0x%0x\n", pir, l_restore_tb); + if (l_restore_tb > getTB()) + { + setTB(l_restore_tb); + } + return; +} |