From: "Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>
To: Josh Poimboeuf <jpoimboe@redhat.com>, Mark Brown <broonie@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
Julien Thierry <jthierry@redhat.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 0/3] arm64: Implement reliable stack trace
Date: Fri, 29 Jan 2021 22:38:03 -0600 [thread overview]
Message-ID: <4ea185a4-bd0b-e065-480a-e8319f924c59@linux.microsoft.com> (raw)
In-Reply-To: <20210128152649.6zin3hzim3etbv2p@treble>
On 1/28/21 9:26 AM, Josh Poimboeuf wrote:
>
>
>>
>>> Then, the unwinder can check the functions it encounters in the stack trace and
>>> inform the caller if it found any no-FP functions. The caller of the unwinder can
>>> decide what he wants to do with that information.
>>>
>>> - the caller can ignore it
>>>
>>> - the caller can print the stack trace with a warning that no-FP functions
>>> were found
>>>
>>> - if the caller is livepatch, the caller can retry until the no-FP functions
>>> disappear from the stack trace. This way, we can have live patching even
>>> when some of the functions in the kernel are no-FP.
>>>
>>> Does this make any sense? Is this acceptable? What are the pitfalls?
>
> Why not just fix the reported no-FP functions?
I was not sure if all warnings can be fixed. For instance, some performance critical
functions may not want the extra overhead of the prolog and epilog. Also, as you
mentioned elsewhere, assembly code is often spaghetti code with multiple labels
and functions sharing code, etc. I am not sure that these can easily be fixed.
To prevent objtool from rejecting these, we have to find some way for objtool to
ignore them so it does not generate any warnings. Is this not correct? For x86,
did guys manage to fix every single warning? I am not familiar with the history
of this. So, I am just assuming.
>
>>> If we can do this, the unwinder could detect cases such as:
>>
>>> - If gcc thinks that a function is a leaf function but the function contains
>>> inline assembly code that calls another function.
>>
>>> - If a call to a function bounces through some intermediate code such as a
>>> trampoline.
>>
>>> - etc.
>>
>>> For specific no-FP functions, the unwinder might be able to deduce the original
>>> caller. In these cases, the stack trace would still be reliable. For all the others,
>>> the stack trace would be considered unreliable.
>>
>> I'm not entirely sure I see the distinction from the current situation
>> here?
>>
Sorry. I should have been clear. If there are no-FP functions that cannot really be
fixed to objtool's satisfaction and objtool is made to ignore them, they may
still show up on the stack and hide their callers.
Madhavan
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-01-30 4:39 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-12 17:26 [RFC PATCH 0/3] arm64: Implement reliable stack trace Mark Brown
2020-10-12 17:26 ` [RFC PATCH 1/3] arm64: remove EL0 exception frame record Mark Brown
2020-10-12 17:26 ` [RFC PATCH 2/3] arm64: stacktrace: Report when we reach the end of the stack Mark Brown
2020-10-13 11:07 ` Mark Rutland
2020-10-12 17:26 ` [RFC PATCH 3/3] arm64: stacktrace: Implement reliable stacktrace Mark Brown
2020-10-13 10:42 ` Mark Brown
2020-10-13 11:42 ` Mark Rutland
2020-10-13 16:12 ` Mark Brown
2020-10-15 13:33 ` Miroslav Benes
2020-10-15 15:57 ` Mark Brown
2020-10-16 10:13 ` Miroslav Benes
2020-10-16 12:30 ` Mark Brown
2020-10-15 13:39 ` [RFC PATCH 0/3] arm64: Implement reliable stack trace Miroslav Benes
2020-10-15 14:16 ` Mark Rutland
2020-10-15 15:49 ` Mark Brown
2020-10-15 21:29 ` Josh Poimboeuf
2020-10-15 21:29 ` Josh Poimboeuf
2020-10-16 11:14 ` Mark Rutland
2020-10-16 11:14 ` Mark Rutland
2020-10-20 10:03 ` Mark Rutland
2020-10-20 10:03 ` Mark Rutland
2020-10-20 15:58 ` Josh Poimboeuf
2020-10-20 15:58 ` Josh Poimboeuf
2020-10-16 12:15 ` Mark Brown
2020-10-16 12:15 ` Mark Brown
2020-10-19 23:41 ` Josh Poimboeuf
2020-10-19 23:41 ` Josh Poimboeuf
2020-10-20 15:39 ` Mark Brown
2020-10-20 15:39 ` Mark Brown
2020-10-20 16:28 ` Josh Poimboeuf
2020-10-20 16:28 ` Josh Poimboeuf
2021-01-27 14:02 ` Madhavan T. Venkataraman
2021-01-27 16:40 ` Mark Rutland
2021-01-27 17:11 ` Mark Brown
2021-01-27 17:24 ` Madhavan T. Venkataraman
2021-01-27 19:54 ` Madhavan T. Venkataraman
2021-01-28 14:22 ` Mark Brown
2021-01-28 15:26 ` Josh Poimboeuf
2021-01-29 21:39 ` Madhavan T. Venkataraman
2021-02-01 3:20 ` Madhavan T. Venkataraman
2021-02-01 14:39 ` Mark Brown
2021-01-30 4:38 ` Madhavan T. Venkataraman [this message]
2021-02-01 15:21 ` Madhavan T. Venkataraman
2021-02-01 15:46 ` Madhavan T. Venkataraman
2021-02-01 16:02 ` Mark Rutland
2021-02-01 16:22 ` Mark Brown
2021-02-01 21:40 ` Madhavan T. Venkataraman
2021-02-01 21:38 ` Madhavan T. Venkataraman
2021-02-01 23:00 ` Josh Poimboeuf
2021-02-02 2:29 ` Madhavan T. Venkataraman
2021-02-02 3:36 ` Josh Poimboeuf
2021-02-02 10:05 ` Mark Rutland
2021-02-02 13:33 ` Madhavan T. Venkataraman
2021-02-02 13:35 ` Madhavan T. Venkataraman
2021-02-02 23:32 ` Madhavan T. Venkataraman
2021-02-03 16:53 ` Mark Rutland
2021-02-03 19:03 ` Madhavan T. Venkataraman
2021-02-05 2:36 ` Madhavan T. Venkataraman
2021-02-01 21:59 ` Madhavan T. Venkataraman
2021-02-02 13:36 ` Mark Brown
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=4ea185a4-bd0b-e065-480a-e8319f924c59@linux.microsoft.com \
--to=madvenka@linux.microsoft.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=jpoimboe@redhat.com \
--cc=jthierry@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--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.