Re: [kvm-unit-tests PATCH 4/5] s390x: Clear first stack frame and end backtrace early

Claudio Imbrenda
2022-11-23T13:29:11Z

On Wed, 23 Nov 2022 08:46:55 +0000
Janosch Frank <frankja@linux.ibm.com> wrote:

> When setting the first stack frame to 0, we can check for a 0
> backchain pointer when doing backtraces to know when to stop.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>

Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>

> ---
> lib/s390x/stack.c | 2 ++
> s390x/cstart64.S | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/lib/s390x/stack.c b/lib/s390x/stack.c
> index e714e07c..9f234a12 100644
> --- a/lib/s390x/stack.c
> +++ b/lib/s390x/stack.c
> @@ -22,6 +22,8 @@ int backtrace_frame(const void *frame, const void **return_addrs, int max_depth)
> for (depth = 0; stack && depth < max_depth; depth++) {
> return_addrs[depth] = (void *)stack->grs[8];
> stack = stack->back_chain;
> + if (!stack)
> + break;
> }
>
> return depth;
> diff --git a/s390x/cstart64.S b/s390x/cstart64.S
> index 666a9567..6f83da2a 100644
> --- a/s390x/cstart64.S
> +++ b/s390x/cstart64.S
> @@ -37,6 +37,8 @@ start:
> sam64 # Set addressing mode to 64 bit
> /* setup stack */
> larl %r15, stackptr
> + /* Clear first stack frame */
> + xc 0(160,%r15), 0(%r15)
> /* setup initial PSW mask + control registers*/
> larl %r1, initial_psw
> lpswe 0(%r1)