Message ID | 20230321-kexec_clang16-v6-4-a2255e81ab45@chromium.org (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | kexec: Fix kexec_file_load for llvm16 with PGO | expand |
Context | Check | Description |
---|---|---|
conchuod/cover_letter | success | Series has a cover letter |
conchuod/tree_selection | success | Guessed tree name to be fixes at HEAD 1b50f956c8fe |
conchuod/fixes_present | success | Fixes tag present in non-next series |
conchuod/maintainers_pattern | success | MAINTAINERS pattern errors before the patch: 1 and now 1 |
conchuod/verify_signedoff | success | Signed-off-by tag matches author and committer |
conchuod/kdoc | success | Errors and warnings before: 0 this patch: 0 |
conchuod/build_rv64_clang_allmodconfig | success | Errors and warnings before: 18 this patch: 18 |
conchuod/module_param | success | Was 0 now: 0 |
conchuod/build_rv64_gcc_allmodconfig | success | Errors and warnings before: 18 this patch: 18 |
conchuod/build_rv32_defconfig | success | Build OK |
conchuod/dtb_warn_rv64 | success | Errors and warnings before: 3 this patch: 3 |
conchuod/header_inline | success | No static functions without inline keyword in header files |
conchuod/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 11 lines checked |
conchuod/source_inline | success | Was 0 now: 0 |
conchuod/build_rv64_nommu_k210_defconfig | success | Build OK |
conchuod/verify_fixes | success | Fixes tag looks correct |
conchuod/build_rv64_nommu_virt_defconfig | success | Build OK |
On Mon, 01 May 2023 05:38:22 PDT (-0700), ribalda@chromium.org wrote: > If PGO is enabled, the purgatory ends up with multiple .text sections. > This is not supported by kexec and crashes the system. > > Cc: stable@vger.kernel.org > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > Signed-off-by: Ricardo Ribalda <ribalda@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)) > + > # 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 Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
On Mon, May 1, 2023 at 5:39 AM Ricardo Ribalda <ribalda@chromium.org> wrote: > > If PGO is enabled, the purgatory ends up with multiple .text sections. > This is not supported by kexec and crashes the system. > > Cc: stable@vger.kernel.org > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Hi Ricardo, Thanks for the series. Does this patch 4/4 need a new online commit description? It's not adding a linker script (maybe an earlier version was). > --- > 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)) > + > # 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 >
Hi Nick Thanks for catching this. It should have said risc/purgatory: Remove profile optimization flags Will fix it on my local branch in case there is a next version of the series. Otherwise, please the maintainer fix the subject. Thanks! On Mon, 1 May 2023 at 18:19, Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Mon, May 1, 2023 at 5:39 AM Ricardo Ribalda <ribalda@chromium.org> wrote: > > > > If PGO is enabled, the purgatory ends up with multiple .text sections. > > This is not supported by kexec and crashes the system. > > > > Cc: stable@vger.kernel.org > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > Hi Ricardo, > Thanks for the series. Does this patch 4/4 need a new online commit > description? It's not adding a linker script (maybe an earlier version > was). > > > --- > > 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)) > > + > > # 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 > > > > > -- > Thanks, > ~Nick Desaulniers
On Mon, May 01, 2023 at 07:18:12PM +0200, Ricardo Ribalda wrote: > On Mon, 1 May 2023 at 18:19, Nick Desaulniers <ndesaulniers@google.com> wrote: > > > > On Mon, May 1, 2023 at 5:39 AM Ricardo Ribalda <ribalda@chromium.org> wrote: > > > > > > If PGO is enabled, the purgatory ends up with multiple .text sections. > > > This is not supported by kexec and crashes the system. > > > > > > Cc: stable@vger.kernel.org > > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > > > Hi Ricardo, > > Thanks for the series. Does this patch 4/4 need a new online commit > > description? It's not adding a linker script (maybe an earlier version > > was). > Thanks for catching this. It should have said > > risc/purgatory: Remove profile optimization flags ^^ Perhaps with the omitted v added too? Also while playing the $subject nitpicking game, is it not called "profile**-guided** optimisation" (and ditto in the comments)? Cheers, Conor. > Will fix it on my local branch in case there is a next version of the > series. Otherwise, please the maintainer fix the subject. > > > --- > > > 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)) > > > + > > > # 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 > > > > > > > > > -- > > Thanks, > > ~Nick Desaulniers > > > > -- > Ricardo Ribalda > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Hi Conor Fixed on my branch https://git.kernel.org/pub/scm/linux/kernel/git/ribalda/linux.git/commit/?h=b4/kexec_clang16&id=1e9cda9fa638cc72581986f60b490cc069a38f75 Will submit a new version after a while :) Thanks! On Mon, 1 May 2023 at 19:28, Conor Dooley <conor@kernel.org> wrote: > > On Mon, May 01, 2023 at 07:18:12PM +0200, Ricardo Ribalda wrote: > > On Mon, 1 May 2023 at 18:19, Nick Desaulniers <ndesaulniers@google.com> wrote: > > > > > > On Mon, May 1, 2023 at 5:39 AM Ricardo Ribalda <ribalda@chromium.org> wrote: > > > > > > > > If PGO is enabled, the purgatory ends up with multiple .text sections. > > > > This is not supported by kexec and crashes the system. > > > > > > > > Cc: stable@vger.kernel.org > > > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> > > > > > > Hi Ricardo, > > > Thanks for the series. Does this patch 4/4 need a new online commit > > > description? It's not adding a linker script (maybe an earlier version > > > was). > > > Thanks for catching this. It should have said > > > > risc/purgatory: Remove profile optimization flags > ^^ > Perhaps with the omitted v added too? > > Also while playing the $subject nitpicking game, is it not called > "profile**-guided** optimisation" (and ditto in the comments)? > > Cheers, > Conor. > > > Will fix it on my local branch in case there is a next version of the > > series. Otherwise, please the maintainer fix the subject. > > > > > --- > > > > 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)) > > > > + > > > > # 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 > > > > > > > > > > > > > -- > > > Thanks, > > > ~Nick Desaulniers > > > > > > > > -- > > Ricardo Ribalda > > > > _______________________________________________ > > linux-riscv mailing list > > linux-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv
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: stable@vger.kernel.org > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > Signed-off-by: Ricardo Ribalda <ribalda@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? 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-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
Hi Conor On Mon, 1 May 2023 at 19:41, Conor Dooley <conor@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: stable@vger.kernel.org > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > Signed-off-by: Ricardo Ribalda <ribalda@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-riscv@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv
On Mon, May 01, 2023 at 09:54:43PM +0200, Ricardo Ribalda wrote: > On Mon, 1 May 2023 at 19:41, Conor Dooley <conor@kernel.org> wrote: > > 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: stable@vger.kernel.org > > > Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") > > > Signed-off-by: Ricardo Ribalda <ribalda@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. Unfortunately I am oh-so-far from an expert on this kind of thing, but I had thought that PURGATORY_CFLAGS_REMOVE was intended for this sort of purpose. > Fixes: bde971a83bbf ("KVM: arm64: nvhe: Fix build with profile optimization") > > does this approach, so this is what I tried and worked. That doesn't have a specific CFLAGS though afaict. Perhaps Nick etc have a more informed opinion here than I do, sorry. Thanks, 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-riscv@lists.infradead.org > > > http://lists.infradead.org/mailman/listinfo/linux-riscv > > > > -- > Ricardo Ribalda
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)) + # 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
If PGO is enabled, the purgatory ends up with multiple .text sections. This is not supported by kexec and crashes the system. Cc: stable@vger.kernel.org Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> --- arch/riscv/purgatory/Makefile | 5 +++++ 1 file changed, 5 insertions(+)