Messages in this thread | | | Date | Thu, 18 Apr 2024 08:15:36 -0700 | From | Nathan Chancellor <> | Subject | Re: [PATCH 0/2] x86/purgatory: Avoid kexec runtime warning with LLVM 18 |
| |
On Thu, Apr 18, 2024 at 01:14:35PM +0200, Borislav Petkov wrote: > On April 17, 2024 11:53:44 PM GMT+02:00, Nathan Chancellor <nathan@kernel.org> wrote: > >Hi all, > > > >After LLVM commit d8a04398f949 ("Reland [X86] With large code model, put > >functions into .ltext with large section flag (#73037)") [1], which > >landed in the 18.x cycle, there is a runtime warning when loading a > >kernel via kexec due to the presence of two text sections (.text and > >.ltext). > > How much of this silliness should we expect now for other parts of the kernel?
Not sure. If I could predict the future, I wouldn't be doing kernel development :) The only reason the purgatory got bit by that LLVM change is because it uses '-mcmodel=large', which is not very common within the kernel (I only see it in arch/um and arch/powerpc other than here).
> Can we turn this off?
No, not as far as I am aware. I suspect it is because for the majority of programs, this is not an issue so it does not justify having a reason to make it toggleable but I am not the author of the LLVM change so I cannot say. However, if this has been the solution when the issue of multiple text sections was first brought up in 97b6b9cbba40, I would just be adding '.ltext' and '.lrodata' to the '.text' and '.rodata' sections to this linker script, so it would be nice to do this so that any future changes are either taken care of by the '.text.*' automatically like '.text.hot' or '.text.<func>' would have been or they are caught by the orphan warnings and addressed in a separate change.
> Why does llvm enforce .ltext for large code models and why gcc doesn't do that? Why does llvm need to do that, what requirement dictates that?
Not sure, I can only go off of what is in the commit message of the LLVM change that introduced this optimization and the surrounding PR discussion, which just seems to indicate a desire to keep small/medium and large text separate *shrug*
https://github.com/llvm/llvm-project/commit/d8a04398f9492f043ffd8fbaf2458778f7d0fcd5
https://github.com/llvm/llvm-project/pull/73037
Cheers, Nathan
| |