[Skiboot] [PATCH] asm: Fix backtrace for unexpected exception

Stewart Smith stewart at linux.vnet.ibm.com
Mon Aug 8 11:48:24 AEST 2016


Michael Neuling <mikey at neuling.org> writes:
> If we take an unknown exception at boot time we attempt to put the
> exception vector in the back trace, The result looks like this (when
> we take an 0x700):
>
>  S: 0000000031e838a0 R: 000000003001365c   .backtrace+0x38
>  S: 0000000031e83930 R: 00000000300186cc   ._abort+0x4c
>  S: 0000000031e839b0 R: 0000000030023a78   .exception_entry+0x114
>  S: 0000000031e83a40 R: 0000000000001f04 * +0x1f04
>  S: 0000000031e83c10 R: 0000000000000700 * +0x700
>  S: 0000000031e83e30 R: 0000000030014444   .main_cpu_entry+0x444
>  S: 0000000031e83f00 R: 000000003000259c   boot_entry+0x19c
>
> We overwrite link address in the current stack frame with the
> exception vector (ie. 0x700 in the above example). Unfortunately this
> overrides the location that caused the exception, which is much more
> useful information in debugging the problem.
>
> This patch removes the writing link register in the current stack
> frame, so the back trace now looks like this:
>
>  S: 0000000031da38a0 R: 000000003001365c   .backtrace+0x38
>  S: 0000000031da3930 R: 00000000300186cc   ._abort+0x4c
>  S: 0000000031da39b0 R: 0000000030023a78   .exception_entry+0x114
>  S: 0000000031da3a40 R: 0000000000001f00 * +0x1f00
>  S: 0000000031da3c10 R: 00000000300323f8   .psi_init+0x1f4
>  S: 0000000031da3e30 R: 0000000030014444   .main_cpu_entry+0x444
>  S: 0000000031da3f00 R: 000000003000259c   boot_entry+0x19c
>
> This loses the exception vector from the back trace, but this
> information is already available in the exception dump just above it
>
> Suggestion by benh.
>
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> ---
>  asm/head.S | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/asm/head.S b/asm/head.S
> index e92f9b8..227b1c3 100644
> --- a/asm/head.S
> +++ b/asm/head.S
> @@ -150,7 +150,6 @@ hir_trigger:
>
>  	.= 0x1e00
>  _exception:
> -	std	%r4,16(%r1)
>  	stdu	%r1,-STACK_FRAMESIZE(%r1)
>  	std	%r3,STACK_CFAR(%r1)
>  	std	%r4,STACK_TYPE(%r1)

Thanks! Merged to master as of e8c3f4c.

Should this be something that heads to stable so that we possibly have a
nicer time?

-- 
Stewart Smith
OPAL Architect, IBM.



More information about the Skiboot mailing list