Message ID | 20220725021902.625630-2-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/2] riscv/purgatory: hard-code obj-y in Makefile | expand |
On Sun, Jul 24, 2022 at 7:22 PM Masahiro Yamada <masahiroy@kernel.org> wrote: > > The .incbin assembler directive is much faster than bin2c + $(CC). > > Do similar refactoring as in commit 4c0f032d4963 ("s390/purgatory: > Omit use of bin2c"). > > Please note the .quad directive matches to size_t in C (both 8 byte) > because the purgatory is compiled only for the 64-bit kernel. > (KEXEC_FILE depends on 64BIT). > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Seems fine. Is the overall goal working towards removing scripts/bin2c? Acked-by: Nick Desaulniers <ndesaulniers@google.com> > --- > > Changes in v2: > - Fix a typo (kexec_purgatroy_end -> kexec_purgatory_end) > > arch/riscv/Kconfig | 1 - > arch/riscv/purgatory/.gitignore | 1 - > arch/riscv/purgatory/Makefile | 8 +------- > arch/riscv/purgatory/kexec-purgatory.S | 14 ++++++++++++++ > scripts/remove-stale-files | 2 ++ > 5 files changed, 17 insertions(+), 9 deletions(-) > create mode 100644 arch/riscv/purgatory/kexec-purgatory.S > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 32ffef9f6e5b..218c2f12b3ef 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -447,7 +447,6 @@ config KEXEC_FILE > > config ARCH_HAS_KEXEC_PURGATORY > def_bool KEXEC_FILE > - select BUILD_BIN2C > depends on CRYPTO=y > depends on CRYPTO_SHA256=y > > diff --git a/arch/riscv/purgatory/.gitignore b/arch/riscv/purgatory/.gitignore > index 38d7d1bda4d7..6e4dfb024ad2 100644 > --- a/arch/riscv/purgatory/.gitignore > +++ b/arch/riscv/purgatory/.gitignore > @@ -1,4 +1,3 @@ > # SPDX-License-Identifier: GPL-2.0-only > purgatory.chk > purgatory.ro > -kexec-purgatory.c > diff --git a/arch/riscv/purgatory/Makefile b/arch/riscv/purgatory/Makefile > index c2d14e2f345d..dd58e1d99397 100644 > --- a/arch/riscv/purgatory/Makefile > +++ b/arch/riscv/purgatory/Makefile > @@ -84,12 +84,6 @@ $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE > $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE > $(call if_changed,ld) > > -targets += kexec-purgatory.c > - > -quiet_cmd_bin2c = BIN2C $@ > - cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@ > - > -$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro $(obj)/purgatory.chk FORCE > - $(call if_changed,bin2c) > +$(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk > > obj-y += kexec-purgatory.o > diff --git a/arch/riscv/purgatory/kexec-purgatory.S b/arch/riscv/purgatory/kexec-purgatory.S > new file mode 100644 > index 000000000000..32c53581b8f2 > --- /dev/null > +++ b/arch/riscv/purgatory/kexec-purgatory.S > @@ -0,0 +1,14 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > + > + .section .rodata, "a" > + > + .align 8 > +kexec_purgatory: > + .globl kexec_purgatory > + .incbin "arch/riscv/purgatory/purgatory.ro" > +.Lkexec_purgatory_end: > + > + .align 8 > +kexec_purgatory_size: > + .globl kexec_purgatory_size > + .quad .Lkexec_purgatory_end - kexec_purgatory > diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files > index 7adab4618035..d75a52199a38 100755 > --- a/scripts/remove-stale-files > +++ b/scripts/remove-stale-files > @@ -40,4 +40,6 @@ if [ -n "${building_out_of_srctree}" ]; then > done > fi > > +rm -f arch/riscv/purgatory/kexec-purgatory.c > + > rm -f scripts/extract-cert > -- > 2.34.1 >
On Tue, Jul 26, 2022 at 2:52 AM Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Sun, Jul 24, 2022 at 7:22 PM Masahiro Yamada <masahiroy@kernel.org> wrote: > > > > The .incbin assembler directive is much faster than bin2c + $(CC). > > > > Do similar refactoring as in commit 4c0f032d4963 ("s390/purgatory: > > Omit use of bin2c"). > > > > Please note the .quad directive matches to size_t in C (both 8 byte) > > because the purgatory is compiled only for the 64-bit kernel. > > (KEXEC_FILE depends on 64BIT). > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > > Seems fine. Is the overall goal working towards removing scripts/bin2c? Yes. I want to remove bin2c. > Acked-by: Nick Desaulniers <ndesaulniers@google.com> > > > --- > > > > Changes in v2: > > - Fix a typo (kexec_purgatroy_end -> kexec_purgatory_end) > > > > arch/riscv/Kconfig | 1 - > > arch/riscv/purgatory/.gitignore | 1 - > > arch/riscv/purgatory/Makefile | 8 +------- > > arch/riscv/purgatory/kexec-purgatory.S | 14 ++++++++++++++ > > scripts/remove-stale-files | 2 ++ > > 5 files changed, 17 insertions(+), 9 deletions(-) > > create mode 100644 arch/riscv/purgatory/kexec-purgatory.S > > > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > > index 32ffef9f6e5b..218c2f12b3ef 100644 > > --- a/arch/riscv/Kconfig > > +++ b/arch/riscv/Kconfig > > @@ -447,7 +447,6 @@ config KEXEC_FILE > > > > config ARCH_HAS_KEXEC_PURGATORY > > def_bool KEXEC_FILE > > - select BUILD_BIN2C > > depends on CRYPTO=y > > depends on CRYPTO_SHA256=y > > > > diff --git a/arch/riscv/purgatory/.gitignore b/arch/riscv/purgatory/.gitignore > > index 38d7d1bda4d7..6e4dfb024ad2 100644 > > --- a/arch/riscv/purgatory/.gitignore > > +++ b/arch/riscv/purgatory/.gitignore > > @@ -1,4 +1,3 @@ > > # SPDX-License-Identifier: GPL-2.0-only > > purgatory.chk > > purgatory.ro > > -kexec-purgatory.c > > diff --git a/arch/riscv/purgatory/Makefile b/arch/riscv/purgatory/Makefile > > index c2d14e2f345d..dd58e1d99397 100644 > > --- a/arch/riscv/purgatory/Makefile > > +++ b/arch/riscv/purgatory/Makefile > > @@ -84,12 +84,6 @@ $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE > > $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE > > $(call if_changed,ld) > > > > -targets += kexec-purgatory.c > > - > > -quiet_cmd_bin2c = BIN2C $@ > > - cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@ > > - > > -$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro $(obj)/purgatory.chk FORCE > > - $(call if_changed,bin2c) > > +$(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk > > > > obj-y += kexec-purgatory.o > > diff --git a/arch/riscv/purgatory/kexec-purgatory.S b/arch/riscv/purgatory/kexec-purgatory.S > > new file mode 100644 > > index 000000000000..32c53581b8f2 > > --- /dev/null > > +++ b/arch/riscv/purgatory/kexec-purgatory.S > > @@ -0,0 +1,14 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > + > > + .section .rodata, "a" > > + > > + .align 8 > > +kexec_purgatory: > > + .globl kexec_purgatory > > + .incbin "arch/riscv/purgatory/purgatory.ro" > > +.Lkexec_purgatory_end: > > + > > + .align 8 > > +kexec_purgatory_size: > > + .globl kexec_purgatory_size > > + .quad .Lkexec_purgatory_end - kexec_purgatory > > diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files > > index 7adab4618035..d75a52199a38 100755 > > --- a/scripts/remove-stale-files > > +++ b/scripts/remove-stale-files > > @@ -40,4 +40,6 @@ if [ -n "${building_out_of_srctree}" ]; then > > done > > fi > > > > +rm -f arch/riscv/purgatory/kexec-purgatory.c > > + > > rm -f scripts/extract-cert > > -- > > 2.34.1 > > > > > -- > Thanks, > ~Nick Desaulniers
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 32ffef9f6e5b..218c2f12b3ef 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -447,7 +447,6 @@ config KEXEC_FILE config ARCH_HAS_KEXEC_PURGATORY def_bool KEXEC_FILE - select BUILD_BIN2C depends on CRYPTO=y depends on CRYPTO_SHA256=y diff --git a/arch/riscv/purgatory/.gitignore b/arch/riscv/purgatory/.gitignore index 38d7d1bda4d7..6e4dfb024ad2 100644 --- a/arch/riscv/purgatory/.gitignore +++ b/arch/riscv/purgatory/.gitignore @@ -1,4 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-only purgatory.chk purgatory.ro -kexec-purgatory.c diff --git a/arch/riscv/purgatory/Makefile b/arch/riscv/purgatory/Makefile index c2d14e2f345d..dd58e1d99397 100644 --- a/arch/riscv/purgatory/Makefile +++ b/arch/riscv/purgatory/Makefile @@ -84,12 +84,6 @@ $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE $(call if_changed,ld) -targets += kexec-purgatory.c - -quiet_cmd_bin2c = BIN2C $@ - cmd_bin2c = $(objtree)/scripts/bin2c kexec_purgatory < $< > $@ - -$(obj)/kexec-purgatory.c: $(obj)/purgatory.ro $(obj)/purgatory.chk FORCE - $(call if_changed,bin2c) +$(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk obj-y += kexec-purgatory.o diff --git a/arch/riscv/purgatory/kexec-purgatory.S b/arch/riscv/purgatory/kexec-purgatory.S new file mode 100644 index 000000000000..32c53581b8f2 --- /dev/null +++ b/arch/riscv/purgatory/kexec-purgatory.S @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + + .section .rodata, "a" + + .align 8 +kexec_purgatory: + .globl kexec_purgatory + .incbin "arch/riscv/purgatory/purgatory.ro" +.Lkexec_purgatory_end: + + .align 8 +kexec_purgatory_size: + .globl kexec_purgatory_size + .quad .Lkexec_purgatory_end - kexec_purgatory diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files index 7adab4618035..d75a52199a38 100755 --- a/scripts/remove-stale-files +++ b/scripts/remove-stale-files @@ -40,4 +40,6 @@ if [ -n "${building_out_of_srctree}" ]; then done fi +rm -f arch/riscv/purgatory/kexec-purgatory.c + rm -f scripts/extract-cert
The .incbin assembler directive is much faster than bin2c + $(CC). Do similar refactoring as in commit 4c0f032d4963 ("s390/purgatory: Omit use of bin2c"). Please note the .quad directive matches to size_t in C (both 8 byte) because the purgatory is compiled only for the 64-bit kernel. (KEXEC_FILE depends on 64BIT). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Changes in v2: - Fix a typo (kexec_purgatroy_end -> kexec_purgatory_end) arch/riscv/Kconfig | 1 - arch/riscv/purgatory/.gitignore | 1 - arch/riscv/purgatory/Makefile | 8 +------- arch/riscv/purgatory/kexec-purgatory.S | 14 ++++++++++++++ scripts/remove-stale-files | 2 ++ 5 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 arch/riscv/purgatory/kexec-purgatory.S