Hi Conor On Mon, 1 May 2023 at 19:41, Conor Dooley <co...@kernel.org> wrote: > > Hey Ricardo, > > On Mon, May 01, 2023 at 02:38:22PM +0200, Ricardo Ribalda wrote: > > If PGO is enabled, the purgatory ends up with multiple .text sections. > > This is not supported by kexec and crashes the system. > > > > Cc: sta...@vger.kernel.org > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > Signed-off-by: Ricardo Ribalda <riba...@chromium.org> > > --- > > arch/riscv/purgatory/Makefile | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/arch/riscv/purgatory/Makefile b/arch/riscv/purgatory/Makefile > > index 5730797a6b40..cf3a44121a90 100644 > > --- a/arch/riscv/purgatory/Makefile > > +++ b/arch/riscv/purgatory/Makefile > > @@ -35,6 +35,11 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS > > CFLAGS_string.o := -D__DISABLE_EXPORTS > > CFLAGS_ctype.o := -D__DISABLE_EXPORTS > > > > +# When profile optimization is enabled, llvm emits two different > > overlapping > > +# text sections, which is not supported by kexec. Remove profile > > optimization > > +# flags. > > +KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% > > -fprofile-use=%,$(KBUILD_CFLAGS)) > > With the caveat of not being au fait with the workings of either PGO or > of purgatory, how come you modify KBUILD_CFLAGS here rather than the > purgatory specific PURGATORY_CFLAGS that are used later in the file?
Definitely, not a Makefile expert here, but when I tried this: @@ -35,6 +40,7 @@ PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss -g0 PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING PURGATORY_CFLAGS += -fno-stack-protector +PURGATORY_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS)) It did not work. Fixes: bde971a83bbf ("KVM: arm64: nvhe: Fix build with profile optimization") does this approach, so this is what I tried and worked. Thanks! > > Cheers, > Conor. > > > + > > # When linking purgatory.ro with -r unresolved symbols are not checked, > > # also link a purgatory.chk binary without -r to check for unresolved > > symbols. > > PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib > > > > -- > > 2.40.1.495.gc816e09b53d-goog > > > > > > _______________________________________________ > > linux-riscv mailing list > > linux-ri...@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv -- Ricardo Ribalda