On Tue, Jun 29 2021, Janosch Frank <frankja@xxxxxxxxxxxxx> wrote: > For debugging it helps if you know if the PGM happened while being in > SIE or not. > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > --- > 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.