Thread (11 messages) 11 messages, 3 authors, 2023-09-08

Re: [PATCH v7 0/4] kexec: Fix kexec_file_load for llvm16 with PGO

From: Song Liu <song@kernel.org>
Date: 2023-09-08 22:53:20
Also in: kexec, linux-riscv, lkml, llvm, stable

On Fri, Sep 8, 2023 at 2:52 PM Ricardo Ribalda [off-list ref] wrote:
Hi Song

On Fri, 8 Sept 2023 at 23:48, Song Liu [off-list ref] wrote:
quoted
Hi Ricardo,

Thanks for your kind reply.

On Fri, Sep 8, 2023 at 2:18 PM Ricardo Ribalda [off-list ref] wrote:
quoted
Hi Song

On Fri, 8 Sept 2023 at 01:08, Song Liu [off-list ref] wrote:
quoted
Hi Ricardo and folks,

On Fri, May 19, 2023 at 7:48 AM Ricardo Ribalda [off-list ref] wrote:
quoted
When upreving llvm I realised that kexec stopped working on my test
platform.

The reason seems to be that due to PGO there are multiple .text sections
on the purgatory, and kexec does not supports that.

Signed-off-by: Ricardo Ribalda <redacted>
We are seeing WARNINGs like the following while kexec'ing a PGO and
LTO enabled kernel:

WARNING: CPU: 26 PID: 110894 at kernel/kexec_file.c:919
kexec_load_purgatory+0x37f/0x390

AFAICT, the warning was added by this set, and it was triggered when
we have many .text sections
in purgatory.ro. The kexec was actually successful. So I wonder
whether we really need the
WARNING here. If we disable LTO (PGO is still enabled), we don't see
the WARNING any more.

I also tested an older kernel (5.19 based), where we also see many
.text sections with LTO. It
kexec()'ed fine. (It doesn't have the WARN_ON() in
kexec_purgatory_setup_sechdrs).
You have been "lucky" that the code has chosen the correct start
address, you need to modify the linker script of your kernel to
disable PGO.
You need to backport a patch like this:
https://lore.kernel.org/lkml/CAPhsuW5_qAvV0N3o+hOiAnb1=buJ1pLzqYW9D+Bwft6hxJvAeQ@mail.gmail.com/T/#md68b7f832216b0c56bbec0c9b07332e180b9ba2b (local)
We already have this commit in our branch. AFAICT, the issue was
triggered by LTO. So something like the following seems fixes it
(I haven't finished the end-to-end test yet). Does this change make
sense to you?
if the end-to-end works, please send it as a patch to the mailing list.

Thanks! :)
OK, it works (AFAICT). Sending the patch.

Thanks,
Song
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help