2021-10-30 17:56:40

by Masahiro Yamada

[permalink] [raw]
Subject: [PATCH] ARM: decompressor: do not copy source files while building

As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
builds") stated, copying source files during the build time may not
end up with as clean code as expected.

Do similar for the other library files for further cleanups of the
Makefile and .gitignore.

Signed-off-by: Masahiro Yamada <[email protected]>
---

KernelVersion: v5.15-rc1

arch/arm/boot/compressed/.gitignore | 5 -----
arch/arm/boot/compressed/Makefile | 33 +++-------------------------
arch/arm/boot/compressed/ashldi3.S | 3 +++
arch/arm/boot/compressed/bswapsdi2.S | 3 +++
arch/arm/boot/compressed/font.c | 2 ++
arch/arm/boot/compressed/hyp-stub.S | 2 ++
arch/arm/boot/compressed/lib1funcs.S | 3 +++
scripts/remove-stale-files | 2 +-
8 files changed, 17 insertions(+), 36 deletions(-)
create mode 100644 arch/arm/boot/compressed/ashldi3.S
create mode 100644 arch/arm/boot/compressed/bswapsdi2.S
create mode 100644 arch/arm/boot/compressed/font.c
create mode 100644 arch/arm/boot/compressed/hyp-stub.S
create mode 100644 arch/arm/boot/compressed/lib1funcs.S

diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore
index 60606b0f378d..d32f41778437 100644
--- a/arch/arm/boot/compressed/.gitignore
+++ b/arch/arm/boot/compressed/.gitignore
@@ -1,9 +1,4 @@
# SPDX-License-Identifier: GPL-2.0-only
-ashldi3.S
-bswapsdi2.S
-font.c
-lib1funcs.S
-hyp-stub.S
piggy_data
vmlinux
vmlinux.lds
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 91265e7ff672..74d2f1401acb 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -13,7 +13,6 @@ ifeq ($(CONFIG_DEBUG_UNCOMPRESS),y)
OBJS += debug.o
AFLAGS_head.o += -DDEBUG
endif
-FONTC = $(srctree)/lib/fonts/font_acorn_8x8.c

# string library code (-Os is enforced to keep it much smaller)
OBJS += string.o
@@ -99,11 +98,8 @@ $(foreach o, $(libfdt_objs) atags_to_fdt.o fdt_check_mem_start.o, \
$(eval CFLAGS_$(o) := -I $(srctree)/scripts/dtc/libfdt -fno-stack-protector))

targets := vmlinux vmlinux.lds piggy_data piggy.o \
- lib1funcs.o ashldi3.o bswapsdi2.o \
head.o $(OBJS)

-clean-files += lib1funcs.S ashldi3.S bswapsdi2.S hyp-stub.S
-
KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING

ccflags-y := -fpic $(call cc-option,-mno-single-pic-base,) -fno-builtin \
@@ -134,23 +130,7 @@ endif
# Next argument is a linker script
LDFLAGS_vmlinux += -T

-# For __aeabi_uidivmod
-lib1funcs = $(obj)/lib1funcs.o
-
-$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S
- $(call cmd,shipped)
-
-# For __aeabi_llsl
-ashldi3 = $(obj)/ashldi3.o
-
-$(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
- $(call cmd,shipped)
-
-# For __bswapsi2, __bswapdi2
-bswapsdi2 = $(obj)/bswapsdi2.o
-
-$(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S
- $(call cmd,shipped)
+OBJS += lib1funcs.o ashldi3.o bswapsdi2.o

# We need to prevent any GOTOFF relocs being used with references
# to symbols in the .bss section since we cannot relocate them
@@ -175,8 +155,8 @@ fi
efi-obj-$(CONFIG_EFI_STUB) := $(objtree)/drivers/firmware/efi/libstub/lib.a

$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
- $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \
- $(bswapsdi2) $(efi-obj-y) FORCE
+ $(addprefix $(obj)/, $(OBJS)) \
+ $(efi-obj-y) FORCE
@$(check_for_multiple_zreladdr)
$(call if_changed,ld)
@$(check_for_bad_syms)
@@ -187,11 +167,4 @@ $(obj)/piggy_data: $(obj)/../Image FORCE
$(obj)/piggy.o: $(obj)/piggy_data

CFLAGS_font.o := -Dstatic=
-
-$(obj)/font.c: $(FONTC)
- $(call cmd,shipped)
-
AFLAGS_hyp-stub.o := -Wa,-march=armv7-a
-
-$(obj)/hyp-stub.S: $(srctree)/arch/$(SRCARCH)/kernel/hyp-stub.S
- $(call cmd,shipped)
diff --git a/arch/arm/boot/compressed/ashldi3.S b/arch/arm/boot/compressed/ashldi3.S
new file mode 100644
index 000000000000..216f82eda609
--- /dev/null
+++ b/arch/arm/boot/compressed/ashldi3.S
@@ -0,0 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __aeabi_llsl */
+#include "../../lib/ashldi3.S"
diff --git a/arch/arm/boot/compressed/bswapsdi2.S b/arch/arm/boot/compressed/bswapsdi2.S
new file mode 100644
index 000000000000..b2156b378c7b
--- /dev/null
+++ b/arch/arm/boot/compressed/bswapsdi2.S
@@ -0,0 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __bswapsi2, __bswapdi2 */
+#include "../../lib/bswapsdi2.S"
diff --git a/arch/arm/boot/compressed/font.c b/arch/arm/boot/compressed/font.c
new file mode 100644
index 000000000000..46a677649db4
--- /dev/null
+++ b/arch/arm/boot/compressed/font.c
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include "../../../../lib/fonts/font_acorn_8x8.c"
diff --git a/arch/arm/boot/compressed/hyp-stub.S b/arch/arm/boot/compressed/hyp-stub.S
new file mode 100644
index 000000000000..a703eaa86f10
--- /dev/null
+++ b/arch/arm/boot/compressed/hyp-stub.S
@@ -0,0 +1,2 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include "../../kernel/hyp-stub.S"
diff --git a/arch/arm/boot/compressed/lib1funcs.S b/arch/arm/boot/compressed/lib1funcs.S
new file mode 100644
index 000000000000..815dec73ba4d
--- /dev/null
+++ b/arch/arm/boot/compressed/lib1funcs.S
@@ -0,0 +1,3 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* For __aeabi_uidivmod */
+#include "../../lib/lib1funcs.S"
diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files
index c3eb81c3f7de..eb630ee287c3 100755
--- a/scripts/remove-stale-files
+++ b/scripts/remove-stale-files
@@ -24,7 +24,7 @@ set -e
# with O=, make sure to remove the stale files in the output tree. Otherwise,
# the build system wrongly compiles the stale ones.
if [ -n "${building_out_of_srctree}" ]; then
- for f in fdt_rw.c fdt_ro.c fdt_wip.c fdt.c
+ for f in fdt_rw.c fdt_ro.c fdt_wip.c fdt.c ashldi3.S bswapsdi2.S font.c lib1funcs.S hyp-stub.S
do
rm -f arch/arm/boot/compressed/${f}
done
--
2.30.2


2022-03-11 22:49:23

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH] ARM: decompressor: do not copy source files while building

On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> builds") stated, copying source files during the build time may not
> end up with as clean code as expected.
>
> Do similar for the other library files for further cleanups of the
> Makefile and .gitignore.
>
> Signed-off-by: Masahiro Yamada <[email protected]>

Hi,

I am now seeing the following every time I run a build:

GEN Makefile
CALL .../linux-rmk/scripts/atomic/check-atomics.sh
CALL .../linux-rmk/scripts/checksyscalls.sh
CHK include/generated/compile.h
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/lib1funcs.o
AS arch/arm/boot/compressed/ashldi3.o
AS arch/arm/boot/compressed/bswapsdi2.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

In other words, those three objects are always rebuilt even though
they haven't changed.

I've tried removing the arch/arm/boot/compressed directory in the
build tree, but that doesn't make any difference.

Running with V=2 shows:

AS arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
gets)
AS arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
AS arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)

It looks to me like:
OBJS += lib1funcs.o ashldi3.o bswapsdi2.o

in your patch should have been added before:

targets := vmlinux vmlinux.lds piggy_data piggy.o \
head.o $(OBJS)

Please confirm.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2022-03-13 17:12:49

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] ARM: decompressor: do not copy source files while building

On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
<[email protected]> wrote:
>
> On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > builds") stated, copying source files during the build time may not
> > end up with as clean code as expected.
> >
> > Do similar for the other library files for further cleanups of the
> > Makefile and .gitignore.
> >
> > Signed-off-by: Masahiro Yamada <[email protected]>
>
> Hi,
>
> I am now seeing the following every time I run a build:
>
> GEN Makefile
> CALL .../linux-rmk/scripts/atomic/check-atomics.sh
> CALL .../linux-rmk/scripts/checksyscalls.sh
> CHK include/generated/compile.h
> Kernel: arch/arm/boot/Image is ready
> AS arch/arm/boot/compressed/lib1funcs.o
> AS arch/arm/boot/compressed/ashldi3.o
> AS arch/arm/boot/compressed/bswapsdi2.o
> LD arch/arm/boot/compressed/vmlinux
> OBJCOPY arch/arm/boot/zImage
> Kernel: arch/arm/boot/zImage is ready
>
> In other words, those three objects are always rebuilt even though
> they haven't changed.
>
> I've tried removing the arch/arm/boot/compressed directory in the
> build tree, but that doesn't make any difference.
>
> Running with V=2 shows:
>
> AS arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> gets)
> AS arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> AS arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
>
> It looks to me like:
> OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
>
> in your patch should have been added before:
>
> targets := vmlinux vmlinux.lds piggy_data piggy.o \
> head.o $(OBJS)
>
> Please confirm.


Sorry for my late reply.

Yes, you are right.

OBJS += lib1funcs.o ashldi3.o bswapsdi2.o

should come before the 'targets' assignment.





--
Best Regards
Masahiro Yamada

2022-03-25 18:43:23

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] ARM: decompressor: do not copy source files while building

Hi Russell,


Was this issue fixed?
(I see nothing happened in linux-next yet)

I will not send a patch because I assume you will
fix this by yourself. If there is something you want
me, please let me know.

Thanks.
Masahiro Yamada






On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <[email protected]> wrote:
>
> On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> <[email protected]> wrote:
> >
> > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > builds") stated, copying source files during the build time may not
> > > end up with as clean code as expected.
> > >
> > > Do similar for the other library files for further cleanups of the
> > > Makefile and .gitignore.
> > >
> > > Signed-off-by: Masahiro Yamada <[email protected]>
> >
> > Hi,
> >
> > I am now seeing the following every time I run a build:
> >
> > GEN Makefile
> > CALL .../linux-rmk/scripts/atomic/check-atomics.sh
> > CALL .../linux-rmk/scripts/checksyscalls.sh
> > CHK include/generated/compile.h
> > Kernel: arch/arm/boot/Image is ready
> > AS arch/arm/boot/compressed/lib1funcs.o
> > AS arch/arm/boot/compressed/ashldi3.o
> > AS arch/arm/boot/compressed/bswapsdi2.o
> > LD arch/arm/boot/compressed/vmlinux
> > OBJCOPY arch/arm/boot/zImage
> > Kernel: arch/arm/boot/zImage is ready
> >
> > In other words, those three objects are always rebuilt even though
> > they haven't changed.
> >
> > I've tried removing the arch/arm/boot/compressed directory in the
> > build tree, but that doesn't make any difference.
> >
> > Running with V=2 shows:
> >
> > AS arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > gets)
> > AS arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> > AS arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> >
> > It looks to me like:
> > OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
> >
> > in your patch should have been added before:
> >
> > targets := vmlinux vmlinux.lds piggy_data piggy.o \
> > head.o $(OBJS)
> >
> > Please confirm.
>
>
> Sorry for my late reply.
>
> Yes, you are right.
>
> OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
>
> should come before the 'targets' assignment.
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada



--
Best Regards
Masahiro Yamada

2022-03-31 05:01:49

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH] ARM: decompressor: do not copy source files while building

Hi,

Your reply was too late for me, I've been away on vacation from 14th
March until now... and now I've got a whole truck-load of catch-up, so
it's likely I'll forget to sort this. Please send a patch to fix it,
thanks.

On Fri, Mar 25, 2022 at 11:54:07AM +0900, Masahiro Yamada wrote:
> Hi Russell,
>
>
> Was this issue fixed?
> (I see nothing happened in linux-next yet)
>
> I will not send a patch because I assume you will
> fix this by yourself. If there is something you want
> me, please let me know.
>
> Thanks.
> Masahiro Yamada
>
>
>
>
>
>
> On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <[email protected]> wrote:
> >
> > On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> > <[email protected]> wrote:
> > >
> > > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > > builds") stated, copying source files during the build time may not
> > > > end up with as clean code as expected.
> > > >
> > > > Do similar for the other library files for further cleanups of the
> > > > Makefile and .gitignore.
> > > >
> > > > Signed-off-by: Masahiro Yamada <[email protected]>
> > >
> > > Hi,
> > >
> > > I am now seeing the following every time I run a build:
> > >
> > > GEN Makefile
> > > CALL .../linux-rmk/scripts/atomic/check-atomics.sh
> > > CALL .../linux-rmk/scripts/checksyscalls.sh
> > > CHK include/generated/compile.h
> > > Kernel: arch/arm/boot/Image is ready
> > > AS arch/arm/boot/compressed/lib1funcs.o
> > > AS arch/arm/boot/compressed/ashldi3.o
> > > AS arch/arm/boot/compressed/bswapsdi2.o
> > > LD arch/arm/boot/compressed/vmlinux
> > > OBJCOPY arch/arm/boot/zImage
> > > Kernel: arch/arm/boot/zImage is ready
> > >
> > > In other words, those three objects are always rebuilt even though
> > > they haven't changed.
> > >
> > > I've tried removing the arch/arm/boot/compressed directory in the
> > > build tree, but that doesn't make any difference.
> > >
> > > Running with V=2 shows:
> > >
> > > AS arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > > gets)
> > > AS arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> > > AS arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> > >
> > > It looks to me like:
> > > OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
> > >
> > > in your patch should have been added before:
> > >
> > > targets := vmlinux vmlinux.lds piggy_data piggy.o \
> > > head.o $(OBJS)
> > >
> > > Please confirm.
> >
> >
> > Sorry for my late reply.
> >
> > Yes, you are right.
> >
> > OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
> >
> > should come before the 'targets' assignment.
> >
> >
> >
> >
> >
> > --
> > Best Regards
> > Masahiro Yamada
>
>
>
> --
> Best Regards
> Masahiro Yamada
>

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

2022-03-31 12:57:07

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] ARM: decompressor: do not copy source files while building

On Thu, Mar 31, 2022 at 1:22 AM Russell King (Oracle)
<[email protected]> wrote:
>
> Hi,
>
> Your reply was too late for me, I've been away on vacation from 14th
> March until now... and now I've got a whole truck-load of catch-up, so
> it's likely I'll forget to sort this. Please send a patch to fix it,
> thanks.

Done.

https://www.armlinux.org.uk/developer/patches/viewpatch.php?id=9189/1


Thanks.




>
> On Fri, Mar 25, 2022 at 11:54:07AM +0900, Masahiro Yamada wrote:
> > Hi Russell,
> >
> >
> > Was this issue fixed?
> > (I see nothing happened in linux-next yet)
> >
> > I will not send a patch because I assume you will
> > fix this by yourself. If there is something you want
> > me, please let me know.
> >
> > Thanks.
> > Masahiro Yamada
> >
> >
> >
> >
> >
> >
> > On Mon, Mar 14, 2022 at 1:35 AM Masahiro Yamada <[email protected]> wrote:
> > >
> > > On Fri, Mar 11, 2022 at 9:07 PM Russell King (Oracle)
> > > <[email protected]> wrote:
> > > >
> > > > On Sun, Oct 31, 2021 at 02:52:58AM +0900, Masahiro Yamada wrote:
> > > > > As commit 7ae4a78daacf ("ARM: 8969/1: decompressor: simplify libfdt
> > > > > builds") stated, copying source files during the build time may not
> > > > > end up with as clean code as expected.
> > > > >
> > > > > Do similar for the other library files for further cleanups of the
> > > > > Makefile and .gitignore.
> > > > >
> > > > > Signed-off-by: Masahiro Yamada <[email protected]>
> > > >
> > > > Hi,
> > > >
> > > > I am now seeing the following every time I run a build:
> > > >
> > > > GEN Makefile
> > > > CALL .../linux-rmk/scripts/atomic/check-atomics.sh
> > > > CALL .../linux-rmk/scripts/checksyscalls.sh
> > > > CHK include/generated/compile.h
> > > > Kernel: arch/arm/boot/Image is ready
> > > > AS arch/arm/boot/compressed/lib1funcs.o
> > > > AS arch/arm/boot/compressed/ashldi3.o
> > > > AS arch/arm/boot/compressed/bswapsdi2.o
> > > > LD arch/arm/boot/compressed/vmlinux
> > > > OBJCOPY arch/arm/boot/zImage
> > > > Kernel: arch/arm/boot/zImage is ready
> > > >
> > > > In other words, those three objects are always rebuilt even though
> > > > they haven't changed.
> > > >
> > > > I've tried removing the arch/arm/boot/compressed directory in the
> > > > build tree, but that doesn't make any difference.
> > > >
> > > > Running with V=2 shows:
> > > >
> > > > AS arch/arm/boot/compressed/lib1funcs.o - due to lib1funcs.o not in $(tar
> > > > gets)
> > > > AS arch/arm/boot/compressed/ashldi3.o - due to ashldi3.o not in $(targets)
> > > > AS arch/arm/boot/compressed/bswapsdi2.o - due to bswapsdi2.o not in $(targets)
> > > >
> > > > It looks to me like:
> > > > OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
> > > >
> > > > in your patch should have been added before:
> > > >
> > > > targets := vmlinux vmlinux.lds piggy_data piggy.o \
> > > > head.o $(OBJS)
> > > >
> > > > Please confirm.
> > >
> > >
> > > Sorry for my late reply.
> > >
> > > Yes, you are right.
> > >
> > > OBJS += lib1funcs.o ashldi3.o bswapsdi2.o
> > >
> > > should come before the 'targets' assignment.
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Best Regards
> > > Masahiro Yamada
> >
> >
> >
> > --
> > Best Regards
> > Masahiro Yamada
> >
>
> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!



--
Best Regards
Masahiro Yamada