summaryrefslogtreecommitdiffstats
path: root/src/kernel/misc.C
diff options
context:
space:
mode:
authorAndrew Geissler <andrewg@us.ibm.com>2014-02-27 15:42:27 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-03-13 15:53:08 -0500
commit7c6a8ba7eda448b90c9e2753d18a3abbbba4accd (patch)
tree321c99ffead916520168d98a7948cea596c52ce1 /src/kernel/misc.C
parent6279c2d6b6938e63243558ce60184fa3725113bb (diff)
downloadtalos-hostboot-7c6a8ba7eda448b90c9e2753d18a3abbbba4accd.tar.gz
talos-hostboot-7c6a8ba7eda448b90c9e2753d18a3abbbba4accd.zip
Use new scratch reg for hb_done and set early in IPL
This is to support using the scratch register for the power off message. I moved to a new scratch register since we were sharing with a SBE scratch reg that was needed early in HB IPL. NOTE! This will have a co-req with an FSP track so we'll need to coordinate. CMVC-Coreq: 917527 Change-Id: I5f81f15126d6ad8d2c9459c5afe730554256c037 RTC: 95818 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9220 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/kernel/misc.C')
-rw-r--r--src/kernel/misc.C24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/kernel/misc.C b/src/kernel/misc.C
index cba6a152c..4588518d2 100644
--- a/src/kernel/misc.C
+++ b/src/kernel/misc.C
@@ -220,12 +220,26 @@ namespace KernelMisc
// First indicate to the FSP that we're done by clearing out the
// "hostboot_done" register. We need to do this since this is the
// power off path.
- updateScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE,0);
+ setHbScratchStatus(HB_SHUTDOWN);
terminateExecuteTI();
}
}
+ void setHbScratchStatus(enum HbRunning i_status)
+ {
+ if(i_status == HB_RUNNING)
+ {
+ const char * hostboot_string = "hostboot";
+ updateScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE,
+ *reinterpret_cast<const uint64_t*>(hostboot_string));
+ }
+ else
+ {
+ updateScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE,0);
+ }
+ }
+
void WinkleCore::masterPreWork()
{
printk("Winkle threads - ");
@@ -290,9 +304,7 @@ namespace KernelMisc
kernel_hbDescriptor.kernelMemoryState);
// Set scratch register to indicate Hostboot is [still] active.
- const char * hostboot_string = "hostboot";
- updateScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE,
- *reinterpret_cast<const uint64_t*>(hostboot_string));
+ setHbScratchStatus(HB_RUNNING);
// Restore caller of cpu_master_winkle().
iv_caller->state = TASK_STATE_RUNNING;
@@ -393,9 +405,7 @@ namespace KernelMisc
kernel_hbDescriptor.kernelMemoryState);
// Set scratch register to indicate Hostboot is [still] active.
- const char * hostboot_string = "hostboot";
- updateScratchReg(MMIO_SCRATCH_HOSTBOOT_ACTIVE,
- *reinterpret_cast<const uint64_t*>(hostboot_string));
+ setHbScratchStatus(HB_RUNNING);
// Restore caller of cpu_all_winkle().
iv_caller->state = TASK_STATE_RUNNING;
OpenPOWER on IntegriCloud