summaryrefslogtreecommitdiffstats
path: root/src/kernel/workitem.C
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2018-07-23 10:34:32 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-07-24 09:39:23 -0500
commit331b4bff6cb94d3578243089c2adcf3908058d63 (patch)
tree22d542cc21702eea675e2f8fa278ca35edf164b4 /src/kernel/workitem.C
parent923ed59ce8a7703b5d36abee3ada0fd4248a6178 (diff)
downloadtalos-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.C15
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;
+}
OpenPOWER on IntegriCloud