From: Ilya Leoshkevich <iii@linux.ibm.com>
To: Heiko Carstens <hca@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Niklas Schnelle <schnelle@linux.ibm.com>,
Matthew Rosato <mjrosato@linux.ibm.com>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Vineeth Vijayan <vneethv@linux.ibm.com>,
Peter Oberparleiter <oberpar@linux.ibm.com>,
Harald Freudenberger <freude@linux.ibm.com>,
Holger Dengler <dengler@linux.ibm.com>,
Stefan Haberland <sth@linux.ibm.com>,
Jan Hoeppner <hoeppner@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: [PATCH 04/32] s390/bug: Indicate modified PSW in disassembly
Date: Mon, 12 Oct 2026 17:07:52 +0200 [thread overview]
Message-ID: <b85d6175-5587-4bca-9851-30241bc96158@linux.ibm.com> (raw)
In-Reply-To: <20261001103247.1989111-5-hca@linux.ibm.com>
On 10/1/26 12:32, Heiko Carstens wrote:
> With [1] the PSW address is set to the return address of the calling
> __WARN_trap() function in order to provide a more useful disassembly of
> the caller rather than the helper itself.
>
> However, since regs->psw.addr is modified, regs->int_code has nothing to
> do with the exception. In order to make that more obvious change the
> disassembler output.
>
> Introduce a new PIF_WARN_TRAP_SKIPPED pt_regs flag and set it whenever
> __WARN_trap() is skipped. In the disassembler output print a "WARN RET"
> prefix to make it obvious that the PSW points to the return address of
> the warning trap function.
>
> Also do not print the interruption code and instruction length code for
> this case, since they have nothing to do with the modified PSW.
>
> Example output:
>
> Krnl Code:
> 000003ffe185bc1c: e3f0ff98ff71 lay %r15,-104(%r15)
> 000003ffe185bc22: e3e0f0980024 stg %r14,152(%r15)
> 000003ffe185bc28: c0e5ff45ed94 brasl %r14,000003ffe0119750
> WARN RET >000003ffe185bc2e: c0e5ffa052b9 brasl %r14,000003ffe0c661a0
> 000003ffe185bc34: c020fffe86d6 larl %r2,000003ffe182c9e0
> 000003ffe185bc3a: e548f0a80006 mvghi 168(%r15),6
> 000003ffe185bc40: e548f0a00005 mvghi 160(%r15),5
> 000003ffe185bc46: a7690004 lghi %r6,4
>
> [1] 79996065cfa2 ("s390/bug: Skip __WARN_trap() in call traces")
>
> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
> ---
> arch/s390/include/asm/ptrace.h | 2 ++
> arch/s390/kernel/dis.c | 23 ++++++++++-------------
> arch/s390/kernel/dumpstack.c | 7 +++++--
> arch/s390/kernel/early.c | 9 +++++++--
> arch/s390/kernel/traps.c | 1 +
> 5 files changed, 25 insertions(+), 17 deletions(-)
>
> diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h
> index 6411e3584283..c844b8aa0fd9 100644
> --- a/arch/s390/include/asm/ptrace.h
> +++ b/arch/s390/include/asm/ptrace.h
> @@ -17,11 +17,13 @@
> #define PIF_PSW_ADDR_ADJUSTED 1 /* psw address has been adjusted */
> #define PIF_SYSCALL_RET_SET 2 /* return value was set via ptrace */
> #define PIF_FTRACE_FULL_REGS 3 /* all register contents valid (ftrace) */
> +#define PIF_WARN_TRAP_SKIPPED 4 /* __WARN_trap() was skipped */
>
> #define _PIF_SYSCALL BIT(PIF_SYSCALL)
> #define _PIF_ADDR_PSW_ADJUSTED BIT(PIF_PSW_ADDR_ADJUSTED)
> #define _PIF_SYSCALL_RET_SET BIT(PIF_SYSCALL_RET_SET)
> #define _PIF_FTRACE_FULL_REGS BIT(PIF_FTRACE_FULL_REGS)
> +#define _PIF_WARN_TRAP_SKIPPED BIT(PIF_WARN_TRAP_SKIPPED)
>
> #define PSW32_MASK_PER _AC(0x40000000, UL)
> #define PSW32_MASK_DAT _AC(0x04000000, UL)
> diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c
> index 1cec93895b3a..5a1a24d211c3 100644
> --- a/arch/s390/kernel/dis.c
> +++ b/arch/s390/kernel/dis.c
> @@ -540,34 +540,31 @@ void show_code(struct pt_regs *regs)
> start += 2;
> }
> /* Decode the instructions. */
> - ptr = buffer;
> - ptr += sprintf(ptr, "%s Code:", mode);
> + printk("%s Code:\n", mode);
> hops = 0;
> while (start < end && hops < 8) {
> + ptr = buffer;
> opsize = insn_length(code[start]);
> - if (start + opsize == 32)
> - *ptr++ = '*';
> + if (start == 32 && test_pt_regs_flag(regs, PIF_WARN_TRAP_SKIPPED))
> + ptr += sprintf(ptr, " WARN RET >");
> + else if (start + opsize == 32 && !test_pt_regs_flag(regs, PIF_WARN_TRAP_SKIPPED))
> + ptr += sprintf(ptr, " *");
> else if (start == 32)
> - *ptr++ = '>';
> + ptr += sprintf(ptr, " >");
> else
> - *ptr++ = ' ';
> + ptr += sprintf(ptr, " ");
> addr = pswaddr + start - 32;
> ptr += sprintf(ptr, "%px: ", (void *)addr);
> if (start + opsize >= end)
> break;
> for (i = 0; i < opsize; i++)
> ptr += sprintf(ptr, "%02x", code[start + i]);
> - *ptr++ = '\t';
> - if (i < 6)
> - *ptr++ = '\t';
> + ptr += sprintf(ptr, "%*s", 13 - 2 * opsize, " ");
> ptr += print_insn(ptr, code + start, addr);
> start += opsize;
> - pr_cont("%s", buffer);
> - ptr = buffer;
> - ptr += sprintf(ptr, "\n ");
> + pr_cont("%s\n", buffer);
Should this really be pr_cont() and not printk()?
The KERN_CONT doc says:
only done after a line that had no enclosing \n
and the new code prints everything line-by-line.
next prev parent reply other threads:[~2026-10-12 15:08 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 10:32 [PATCH 00/32] s390: Improve exception table handling and disassembler Heiko Carstens
2026-10-01 10:32 ` [PATCH 01/32] s390/kprobes: Prevent kprobes on instructions with exception table entry Heiko Carstens
2026-10-12 11:31 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 02/32] s390/early: Fix early warning handling Heiko Carstens
2026-10-12 12:11 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 03/32] s390: Clear pt_regs flags field Heiko Carstens
2026-10-12 12:15 ` Ilya Leoshkevich
2026-10-12 12:21 ` Heiko Carstens
2026-10-01 10:32 ` [PATCH 04/32] s390/bug: Indicate modified PSW in disassembly Heiko Carstens
2026-10-12 15:07 ` Ilya Leoshkevich [this message]
2026-10-12 15:29 ` Heiko Carstens
2026-10-12 15:37 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 05/32] s390/tools: Rename gen_facilities to gen_bitmaps Heiko Carstens
2026-10-12 12:35 ` Ilya Leoshkevich
2026-10-12 13:26 ` Heiko Carstens
2026-10-01 10:32 ` [PATCH 06/32] s390/tools: Generate bitmap of nullified program checks Heiko Carstens
2026-10-12 12:50 ` Ilya Leoshkevich
2026-10-12 13:32 ` Heiko Carstens
2026-10-01 10:32 ` [PATCH 07/32] s390/traps: Handle nullifying program checks in get_trap_ip() Heiko Carstens
2026-10-12 13:01 ` Ilya Leoshkevich
2026-10-12 13:42 ` Heiko Carstens
2026-10-12 14:31 ` Ilya Leoshkevich
2026-10-12 15:30 ` Heiko Carstens
2026-10-01 10:32 ` [PATCH 08/32] s390/dis: Improve show_code() output Heiko Carstens
2026-10-12 15:08 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 09/32] s390/extable: Rework exception handling logic Heiko Carstens
2026-10-12 13:09 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 10/32] s390/diag: Convert amode31 exception tables to EX_TABLE_INSN Heiko Carstens
2026-10-12 13:13 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 11/32] s390/uaccess: Convert inline assembly " Heiko Carstens
2026-10-12 13:16 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 12/32] s390/lib/uaccess: " Heiko Carstens
2026-10-12 13:24 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 13/32] s390/futex: " Heiko Carstens
2026-10-12 13:27 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 14/32] s390/diag: " Heiko Carstens
2026-10-12 14:20 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 15/32] s390/mm/pfault: " Heiko Carstens
2026-10-12 14:21 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 16/32] s390/cpu_mf: " Heiko Carstens
2026-10-12 14:22 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 17/32] s390/cert_store: " Heiko Carstens
2026-10-12 14:23 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 18/32] s390/ipl: " Heiko Carstens
2026-10-12 14:23 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 19/32] s390/hypfs: " Heiko Carstens
2026-10-12 14:24 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 20/32] s390/ap: " Heiko Carstens
2026-10-02 7:54 ` Harald Freudenberger
2026-10-01 10:32 ` [PATCH 21/32] s390/fpu: " Heiko Carstens
2026-10-12 14:25 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 22/32] s390/traps: " Heiko Carstens
2026-10-12 14:25 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 23/32] s390/word-at-a-time: " Heiko Carstens
2026-10-12 14:26 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 24/32] s390/kvm: " Heiko Carstens
2026-10-02 8:24 ` Claudio Imbrenda
2026-10-01 10:32 ` [PATCH 25/32] s390/pci: " Heiko Carstens
2026-10-02 9:12 ` Niklas Schnelle
2026-10-01 10:32 ` [PATCH 26/32] s390/boot: " Heiko Carstens
2026-10-12 14:28 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 27/32] s390/cio: " Heiko Carstens
2026-10-12 14:32 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 28/32] s390/dasd: " Heiko Carstens
2026-10-12 14:33 ` Ilya Leoshkevich
2026-10-12 14:52 ` Stefan Haberland
2026-10-01 10:32 ` [PATCH 29/32] s390/diag_ftp: " Heiko Carstens
2026-10-12 14:33 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 30/32] s390/sclp: " Heiko Carstens
2026-10-12 14:34 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 31/32] s390/bpf: Simplify exception table entry handling Heiko Carstens
2026-10-12 14:38 ` Ilya Leoshkevich
2026-10-01 10:32 ` [PATCH 32/32] s390/extable: Remove EX_TABLE macros and fallback extable search Heiko Carstens
2026-10-12 14:43 ` Ilya Leoshkevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b85d6175-5587-4bca-9851-30241bc96158@linux.ibm.com \
--to=iii@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=dengler@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hoeppner@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=oberpar@linux.ibm.com \
--cc=schnelle@linux.ibm.com \
--cc=sth@linux.ibm.com \
--cc=svens@linux.ibm.com \
--cc=vneethv@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®