Re: [kvm-unit-tests PATCH 5/5] lib: s390x: Print if a pgm happened while in SIE
From: Cornelia Huck <cohuck@redhat.com>
Date: 2021-06-30 09:13:07
Also in:
linux-s390
On Tue, Jun 29 2021, Janosch Frank [off-list ref] wrote:
quoted hunk ↗ jump to hunk
For debugging it helps if you know if the PGM happened while being in SIE or not. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- lib/s390x/interrupt.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)diff --git a/lib/s390x/interrupt.c b/lib/s390x/interrupt.c index b627942..76015b1 100644 --- a/lib/s390x/interrupt.c +++ b/lib/s390x/interrupt.c@@ -141,10 +141,21 @@ static void print_int_regs(struct stack_frame_int *stack) static void print_pgm_info(struct stack_frame_int *stack) { + bool in_sie; + + in_sie = (lc->pgm_old_psw.addr >= (uintptr_t)sie_entry && + lc->pgm_old_psw.addr <= (uintptr_t)sie_exit); + printf("\n"); - printf("Unexpected program interrupt: %d on cpu %d at %#lx, ilen %d\n", - lc->pgm_int_code, stap(), lc->pgm_old_psw.addr, - lc->pgm_int_id); + if (!in_sie) + printf("Unexpected program interrupt: %d on cpu %d at %#lx, ilen %d\n", + lc->pgm_int_code, stap(), lc->pgm_old_psw.addr, + lc->pgm_int_id); + else + printf("Unexpected program interrupt in SIE: %d on cpu %d at %#lx, ilen %d\n", + lc->pgm_int_code, stap(), lc->pgm_old_psw.addr, + lc->pgm_int_id);
Hm...
printf("Unexpected program interrupt%s: %d on cpu %d at %#lx, ilen %d\n",
in_sie ? " in SIE" : "",
lc->pgm_int_code, stap(), lc->pgm_old_psw.addr,
lc->pgm_int_id);
Matter of taste, I guess.