linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mips: always link byteswap helpers into decompressor
@ 2021-07-02 14:28 Arnd Bergmann
  2021-07-05 15:08 ` Thomas Bogendoerfer
  0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2021-07-02 14:28 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Arnd Bergmann, Paul Cercueil, Alexander Lobakin, Xingxing Su,
	zhaoxiao, Huacai Chen, Ralf Baechle, Alban Bedel, linux-mips,
	linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

My series to clean up the unaligned access implementation
across architectures caused some mips randconfig builds to
fail with:

   mips64-linux-ld: arch/mips/boot/compressed/decompress.o: in function `decompress_kernel':
   decompress.c:(.text.decompress_kernel+0x54): undefined reference to `__bswapsi2'

It turns out that this problem has already been fixed for the XZ
decompressor but now it also shows up in (at least) LZO and LZ4.  From my
analysis I concluded that the compiler could always have emitted those
calls, but the different implementation allowed it to make otherwise
better decisions about not inlining the byteswap, which results in the
link error when the out-of-line code is missing.

While it could be addressed by adding it to the two decompressor
implementations that are known to be affected, but as this only adds
112 bytes to the kernel, the safer choice is to always add them.

Fixes: c50ec6787536 ("MIPS: zboot: Fix the build with XZ compression on older GCC versions")
Fixes: 0652035a5794 ("asm-generic: unaligned: remove byteshift helpers")
Link: https://lore.kernel.org/linux-mm/202106301304.gz2wVY9w-lkp@intel.com/
Link: https://lore.kernel.org/linux-mm/202106260659.TyMe8mjr-lkp@intel.com/
Link: https://lore.kernel.org/linux-mm/202106172016.onWT6Tza-lkp@intel.com/
Link: https://lore.kernel.org/linux-mm/202105231743.JJcALnhS-lkp@intel.com/
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/mips/boot/compressed/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
index e4b7839293e1..3548b3b45269 100644
--- a/arch/mips/boot/compressed/Makefile
+++ b/arch/mips/boot/compressed/Makefile
@@ -40,7 +40,7 @@ GCOV_PROFILE := n
 UBSAN_SANITIZE := n
 
 # decompressor objects (linked with vmlinuz)
-vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o
+vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/bswapsi.o
 
 ifdef CONFIG_DEBUG_ZBOOT
 vmlinuzobjs-$(CONFIG_DEBUG_ZBOOT)		   += $(obj)/dbg.o
@@ -54,7 +54,7 @@ extra-y += uart-ath79.c
 $(obj)/uart-ath79.c: $(srctree)/arch/mips/ath79/early_printk.c
 	$(call cmd,shipped)
 
-vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o $(obj)/bswapsi.o
+vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o
 
 extra-y += ashldi3.c
 $(obj)/ashldi3.c: $(obj)/%.c: $(srctree)/lib/%.c FORCE
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mips: always link byteswap helpers into decompressor
  2021-07-02 14:28 [PATCH] mips: always link byteswap helpers into decompressor Arnd Bergmann
@ 2021-07-05 15:08 ` Thomas Bogendoerfer
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Bogendoerfer @ 2021-07-05 15:08 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Arnd Bergmann, Paul Cercueil, Alexander Lobakin, Xingxing Su,
	zhaoxiao, Huacai Chen, Ralf Baechle, Alban Bedel, linux-mips,
	linux-kernel

On Fri, Jul 02, 2021 at 04:28:37PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> My series to clean up the unaligned access implementation
> across architectures caused some mips randconfig builds to
> fail with:
> 
>    mips64-linux-ld: arch/mips/boot/compressed/decompress.o: in function `decompress_kernel':
>    decompress.c:(.text.decompress_kernel+0x54): undefined reference to `__bswapsi2'
> 
> It turns out that this problem has already been fixed for the XZ
> decompressor but now it also shows up in (at least) LZO and LZ4.  From my
> analysis I concluded that the compiler could always have emitted those
> calls, but the different implementation allowed it to make otherwise
> better decisions about not inlining the byteswap, which results in the
> link error when the out-of-line code is missing.
> 
> While it could be addressed by adding it to the two decompressor
> implementations that are known to be affected, but as this only adds
> 112 bytes to the kernel, the safer choice is to always add them.
> 
> Fixes: c50ec6787536 ("MIPS: zboot: Fix the build with XZ compression on older GCC versions")
> Fixes: 0652035a5794 ("asm-generic: unaligned: remove byteshift helpers")
> Link: https://lore.kernel.org/linux-mm/202106301304.gz2wVY9w-lkp@intel.com/
> Link: https://lore.kernel.org/linux-mm/202106260659.TyMe8mjr-lkp@intel.com/
> Link: https://lore.kernel.org/linux-mm/202106172016.onWT6Tza-lkp@intel.com/
> Link: https://lore.kernel.org/linux-mm/202105231743.JJcALnhS-lkp@intel.com/
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/mips/boot/compressed/Makefile | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

applied to mips-next (for second pull request).

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-07-05 15:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-02 14:28 [PATCH] mips: always link byteswap helpers into decompressor Arnd Bergmann
2021-07-05 15:08 ` Thomas Bogendoerfer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).