Re: [PATCH v6 4/4] risc/purgatory: Add linker script
On Mon, May 01, 2023 at 09:54:43PM +0200, Ricardo Ribalda wrote: > On Mon, 1 May 2023 at 19:41, Conor Dooley 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: sta...@vger.kernel.org > > > Fixes: 930457057abe ("kernel/kexec_file.c: split up > > > __kexec_load_puragory") > > > Signed-off-by: Ricardo Ribalda > > > --- > > > 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-ri...@lists.infradead.org > > > http://lists.infradead.org/mailman/listinfo/linux-riscv > > > > -- > Ricardo Ribalda signature.asc Description: PGP signature
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
Hi Conor On Mon, 1 May 2023 at 19:41, Conor Dooley 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 > > --- > > 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
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
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 > --- > 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-ri...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv signature.asc Description: PGP signature
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
Hi Conor Fixed on my branch https://git.kernel.org/pub/scm/linux/kernel/git/ribalda/linux.git/commit/?h=b4/kexec_clang16=1e9cda9fa638cc72581986f60b490cc069a38f75 Will submit a new version after a while :) Thanks! On Mon, 1 May 2023 at 19:28, Conor Dooley wrote: > > On Mon, May 01, 2023 at 07:18:12PM +0200, Ricardo Ribalda wrote: > > On Mon, 1 May 2023 at 18:19, Nick Desaulniers > > wrote: > > > > > > On Mon, May 1, 2023 at 5:39 AM 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 > > > > > > 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-ri...@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-riscv -- Ricardo Ribalda
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
On Mon, May 01, 2023 at 07:18:12PM +0200, Ricardo Ribalda wrote: > On Mon, 1 May 2023 at 18:19, Nick Desaulniers wrote: > > > > On Mon, May 1, 2023 at 5:39 AM 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 > > > > 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-ri...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv signature.asc Description: PGP signature
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
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 wrote: > > On Mon, May 1, 2023 at 5:39 AM 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 > > 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 -- Ricardo Ribalda
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
On Mon, May 1, 2023 at 5:39 AM 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 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
Re: [PATCH v6 4/4] risc/purgatory: Add linker script
On Mon, 01 May 2023 05:38:22 PDT (-0700), riba...@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: sta...@vger.kernel.org Fixes: 930457057abe ("kernel/kexec_file.c: split up __kexec_load_puragory") Signed-off-by: Ricardo Ribalda --- 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
[PATCH v6 4/4] risc/purgatory: Add linker script
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 --- 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