From: Puranjay Mohan <puranjay12@gmail.com>
To: Mark Rutland <mark.rutland@arm.com>,
linux-arm-kernel@lists.infradead.org
Cc: ardb@kernel.org, broonie@kernel.org, catalin.marinas@arm.com,
jpoimboe@kernel.org, kaleshsingh@google.com,
madvenka@linux.microsoft.com, mark.rutland@arm.com,
maz@kernel.org, mbenes@suse.cz, will@kernel.org
Subject: Re: [PATCH 00/10] arm64: stacktrace: improve unwind reporting
Date: Tue, 15 Oct 2024 11:54:34 +0000 [thread overview]
Message-ID: <mb61p8qupmvid.fsf@gmail.com> (raw)
In-Reply-To: <20241010101510.1487477-1-mark.rutland@arm.com>
[-- Attachment #1: Type: text/plain, Size: 2768 bytes --]
Mark Rutland <mark.rutland@arm.com> writes:
> This series improves arm64's unwinder to explicitly identify exception
> boundaries, reporting both pt_regs::pc and pt_regs::lr and explicitly
> identifying the source of elements in the stacktrace. This is useful to
> humans when reviewing a stacktrace, and serves as infrastructure that
> can be used for RELIABLE_STACKTRACE in future.
>
> The first 6 patches are preparatory work that are not intended to have
> any functional impact, with patches 7 to 10 making the key changes.
> Largely this involves teaching the unwinder to track metadata for each
> unwind step, and modifying the way we manage pt_regs::stackframe so that
> exception boundaries can be identifier explcitily.
>
> With this series applied, the unwinder will report when unwind elements are not
> simply the result of a frame pointer based unwind, e.g.
>
> | Call trace:
> | show_stack+0x20/0x38 (CF)
> | dump_stack_lvl+0x60/0x80 (F)
> | dump_stack+0x18/0x28
> | nmi_cpu_backtrace+0xfc/0x140
> | nmi_trigger_cpumask_backtrace+0x1c8/0x200
> | arch_trigger_cpumask_backtrace+0x20/0x40
> | sysrq_handle_showallcpus+0x24/0x38 (F)
> | __handle_sysrq+0xa8/0x1b0 (F)
> | handle_sysrq+0x38/0x50 (F)
> | pl011_int+0x420/0x570 (F)
> | __handle_irq_event_percpu+0x60/0x220 (F)
> | handle_irq_event+0x54/0xc0 (F)
> | handle_fasteoi_irq+0xa8/0x1d0 (F)
> | generic_handle_domain_irq+0x34/0x58 (F)
> | gic_handle_irq+0x54/0x140 (FK)
> | call_on_irq_stack+0x24/0x58 (F)
> | do_interrupt_handler+0x88/0xa0
> | el1_interrupt+0x34/0x68 (F)
> | el1h_64_irq_handler+0x18/0x28
> | el1h_64_irq+0x6c/0x70
> | default_idle_call+0x34/0x180 (P)
> | default_idle_call+0x28/0x180 (L)
> | do_idle+0x204/0x268
> | cpu_startup_entry+0x3c/0x50 (F)
> | rest_init+0xe4/0xf0
> | start_kernel+0x738/0x740
> | __primary_switched+0x88/0x98
>
> ... where:
>
> * "C" indicates that the first element of the trace was the caller of an unwind
> function (vs "T" for a blocked task's stave PC, or "P" for a pt_regs::pc).
>
> * "F" indicates that the element was recovered from fgraph (and
> would otherwise have been reported as return_to_handler).
>
> * "K" indicates that the element was recovered from kretprobes (and
> would otherwise have been reported as __kretprobe_trampoline).
>
> * "P" indicates that the element was recovered from pt_regs::pc, and therefore
> this is the first element after an exception boundary.
>
> * "L" indidates that the element was recovered from pt_regs::lr, and therefore
> this may or may not be reliable depending on whether the LR was live at the
> moment the exception was taken.
>
> Mark.
with all the typos reported by others fixed.
Reviewed-by: Puranjay Mohan <puranjay12@gmail.com>
Thanks,
Puranjay Mohan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 255 bytes --]
prev parent reply other threads:[~2024-10-15 11:56 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-10 10:15 [PATCH 00/10] arm64: stacktrace: improve unwind reporting Mark Rutland
2024-10-10 10:15 ` [PATCH 01/10] arm64: pt_regs: assert pt_regs is a multiple of 16 bytes Mark Rutland
2024-10-10 14:23 ` Mark Brown
2024-10-10 10:15 ` [PATCH 02/10] arm64: pt_regs: remove stale big-endian layout Mark Rutland
2024-10-10 14:27 ` Mark Brown
2024-10-11 12:16 ` Miroslav Benes
2024-10-10 10:15 ` [PATCH 03/10] arm64: pt_regs: rename "pmr_save" -> "pmr" Mark Rutland
2024-10-10 14:27 ` Mark Brown
2024-10-10 10:15 ` [PATCH 04/10] arm64: pt_regs: swap 'unused' and 'pmr' fields Mark Rutland
2024-10-10 14:33 ` Mark Brown
2024-10-10 10:15 ` [PATCH 05/10] arm64: use a common struct frame_record Mark Rutland
2024-10-10 14:40 ` Mark Brown
2024-10-11 12:36 ` Miroslav Benes
2024-10-10 10:15 ` [PATCH 06/10] arm64: stacktrace: move dump_backtrace() to kunwind_stack_walk() Mark Rutland
2024-10-10 14:44 ` Mark Brown
2024-10-10 10:15 ` [PATCH 07/10] arm64: stacktrace: report source of unwind data Mark Rutland
2024-10-10 15:13 ` Mark Brown
2024-10-10 10:15 ` [PATCH 08/10] arm64: stacktrace: report recovered PCs Mark Rutland
2024-10-10 15:16 ` Mark Brown
2024-10-11 12:58 ` Miroslav Benes
2024-10-11 15:02 ` Mark Rutland
2024-10-10 10:15 ` [PATCH 09/10] arm64: stacktrace: split unwind_consume_stack() Mark Rutland
2024-10-11 13:11 ` Mark Brown
2024-10-10 10:15 ` [PATCH 10/10] arm64: stacktrace: unwind exception boundaries Mark Rutland
2024-10-11 15:16 ` Miroslav Benes
2024-10-11 16:13 ` Mark Rutland
2024-10-11 16:34 ` Miroslav Benes
2024-10-12 9:22 ` Mark Brown
2024-10-11 15:19 ` [PATCH 00/10] arm64: stacktrace: improve unwind reporting Miroslav Benes
2024-10-11 16:32 ` Mark Rutland
2024-10-15 11:54 ` Puranjay Mohan [this message]
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=mb61p8qupmvid.fsf@gmail.com \
--to=puranjay12@gmail.com \
--cc=ardb@kernel.org \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=jpoimboe@kernel.org \
--cc=kaleshsingh@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=madvenka@linux.microsoft.com \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=mbenes@suse.cz \
--cc=will@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.