diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2012-09-13 17:26:13 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2012-09-21 14:27:08 -0500 |
commit | f754a2a6f0079f3424e2368ae3c3635ac8440612 (patch) | |
tree | db7821f2e34e36f40fae69277e0cefb93573adaf /src/include | |
parent | 337654733b5bb5ba1a33b41c0fecf78c36185b13 (diff) | |
download | talos-hostboot-f754a2a6f0079f3424e2368ae3c3635ac8440612.tar.gz talos-hostboot-f754a2a6f0079f3424e2368ae3c3635ac8440612.zip |
Fixes for winkle state.
The memory profiling tools sometimes encountered a condition where
the kernel stack was becoming corrupted. I tracked it down to the
winkle code storing the winkle-save state at the wrong end of the
stack. Moving the winkle-save area to the bottom of the stack,
which is where I originally intended it to go.
Also noticed that the task issuing the winkle was in "running"
state while waiting for the cores to come out of winkle. Ensure
that the kernel updates the task state with a non-running status
while we are waiting for winkle to complete.
Change-Id: I07a56ea6f24cbc09362f9227d81915da5bc9f148
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1737
Tested-by: Jenkins Server
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/kernel/cpu.H | 4 | ||||
-rw-r--r-- | src/include/kernel/ppcconsts.S | 47 |
2 files changed, 28 insertions, 23 deletions
diff --git a/src/include/kernel/cpu.H b/src/include/kernel/cpu.H index 21e4dae74..824a65370 100644 --- a/src/include/kernel/cpu.H +++ b/src/include/kernel/cpu.H @@ -53,6 +53,9 @@ struct cpu_t /** Stack to use while in kernel mode. */ void* kernel_stack; + /** Bottom of the kernel stack. */ + void* kernel_stack_bottom; + /** ID of the CPU (PIR value) */ cpuid_t cpu; @@ -93,6 +96,7 @@ struct cpu_t /** Sequence ID of CPU initialization. */ uint64_t cpu_start_seqid; + }; /** @fn getCpuId diff --git a/src/include/kernel/ppcconsts.S b/src/include/kernel/ppcconsts.S index d888e497e..f76d8cf6b 100644 --- a/src/include/kernel/ppcconsts.S +++ b/src/include/kernel/ppcconsts.S @@ -1,25 +1,25 @@ -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/include/kernel/ppcconsts.S $ -# -# IBM CONFIDENTIAL -# -# COPYRIGHT International Business Machines Corp. 2010,2012 -# -# p1 -# -# Object Code Only (OCO) source materials -# Licensed Internal Code Source Materials -# IBM HostBoot Licensed Internal Code -# -# The source code for this program is not published or otherwise -# divested of its trade secrets, irrespective of what has been -# deposited with the U.S. Copyright Office. -# -# Origin: 30 -# -# IBM_PROLOG_END_TAG +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/include/kernel/ppcconsts.S $ +# +# IBM CONFIDENTIAL +# +# COPYRIGHT International Business Machines Corp. 2010,2012 +# +# p1 +# +# Object Code Only (OCO) source materials +# Licensed Internal Code Source Materials +# IBM HostBoot Licensed Internal Code +# +# The source code for this program is not published or otherwise +# divested of its trade secrets, irrespective of what has been +# deposited with the U.S. Copyright Office. +# +# Origin: 30 +# +# IBM_PROLOG_END_TAG #*--------------------------------------------------------------------*# #* Register Constants *# #*--------------------------------------------------------------------*# @@ -246,7 +246,8 @@ .set TASK_FPSCR, TASK_FPR_31+8 .set CPU_KERNEL_STACK, 0 -.set CPU_CPUID, CPU_KERNEL_STACK+8 +.set CPU_KERNEL_STACK_BOTTOM, CPU_KERNEL_STACK+8 +.set CPU_CPUID, CPU_KERNEL_STACK_BOTTOM+8 .set CPU_STATUS, CPU_CPUID+4 .set CPU_STATUS_MASTER, 0 |