public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] [RFC, DO NOT APPLY] vmlinux.lds: revert link speed regression
@ 2025-01-22 23:59 Sam James
  2025-01-23  7:33 ` Arnd Bergmann
  0 siblings, 1 reply; 11+ messages in thread
From: Sam James @ 2025-01-22 23:59 UTC (permalink / raw)
  To: xur, Michael Matz
  Cc: ardb, arnd, arnd, jannh, kees, linux-arch, linux-kbuild,
	linux-kernel, masahiroy, nathan, regressions, shenhan

Can you file a binutils bug please with that reproducer and the bisect
result? Something smaller would be nice but isn't required (at least for
an initial report).

(CC'd matz, full thread at https://lore.kernel.org/linux-kbuild/20250120212839.1675696-1-arnd@kernel.org/).

^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH] [RFC, DO NOT APPLY] vmlinux.lds: revert link speed regression
@ 2025-01-20 21:21 Arnd Bergmann
  2025-01-21  0:19 ` Masahiro Yamada
  2025-01-21 17:45 ` Rong Xu
  0 siblings, 2 replies; 11+ messages in thread
From: Arnd Bergmann @ 2025-01-20 21:21 UTC (permalink / raw)
  To: linux-kbuild, Masahiro Yamada
  Cc: linux-kernel, Arnd Bergmann, regressions, Han Shen,
	Nathan Chancellor, Kees Cook, Rong Xu, Jann Horn, Ard Biesheuvel,
	linux-arch

From: Arnd Bergmann <arnd@arndb.de>

I noticed a regression in the time it takes to fully link some randconfig
kernels and bisected this to commit 0043ecea2399 ("vmlinux.lds.h: Adjust
symbol ordering in text output section"), which (among other changes) moves
.text.unlikely ahead of .text.

Partially reverting this makes the final link over six times faster again,
back to what it was in linux-6.12:

		linux-6.12	linux-6.13
ld.lld v20	1.2s		1.2s
ld.bfd v2.36	3.2s		5.2s
ld.bfd v2.39	59s		388s

According to the commit description, that revert is not allowed here
because with CONFIG_LD_DEAD_CODE_DATA_ELIMINATION, the .text.unlikely
section name conflicts with the function-section names. On the other
hand, the excessive link time happens both with and without that
option, so the order could be conditional.

I did not try to bisect the linker beyond trying multiple versions
I had installed already, and it does feel like the behavior of recent
versions (tested 2.39 and 2.42 with identical results) is broken in
some form that earlier versions were not. According to 'perf', most
of the time is spent in elf_link_adjust_relocs() and ext64l_r_offset().

I also did not try to narrow the problem down to specific kernel
configuration options, but from my first impression it does appear
to be rare, and unrelated to the Propeller options added in 6.13.

Cc: regressions@lists.linux.dev
Cc: Han Shen <shenhan@google.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Kees Cook <kees@kernel.org>
Fixes: 0043ecea2399 ("vmlinux.lds.h: Adjust symbol ordering in text output section")
Link: https://pastebin.com/raw/sWpbkapL (config)
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/asm-generic/vmlinux.lds.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 54504013c749..61fa047023b5 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -588,10 +588,10 @@ defined(CONFIG_AUTOFDO_CLANG) || defined(CONFIG_PROPELLER_CLANG)
 		*(.text.asan.* .text.tsan.*)				\
 		*(.text.unknown .text.unknown.*)			\
 		TEXT_SPLIT						\
-		TEXT_UNLIKELY						\
 		. = ALIGN(PAGE_SIZE);					\
 		TEXT_HOT						\
 		*(TEXT_MAIN .text.fixup)				\
+		TEXT_UNLIKELY						\
 		NOINSTR_TEXT						\
 		*(.ref.text)
 
-- 
2.39.5


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

end of thread, other threads:[~2025-01-23  7:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-22 23:59 [PATCH] [RFC, DO NOT APPLY] vmlinux.lds: revert link speed regression Sam James
2025-01-23  7:33 ` Arnd Bergmann
  -- strict thread matches above, loose matches on Subject: below --
2025-01-20 21:21 Arnd Bergmann
2025-01-21  0:19 ` Masahiro Yamada
2025-01-21  7:41   ` Arnd Bergmann
2025-01-21 17:36     ` Rong Xu
2025-01-21 17:45 ` Rong Xu
2025-01-21 21:17   ` Arnd Bergmann
2025-01-22 18:47     ` Rong Xu
2025-01-22 20:29       ` Arnd Bergmann
2025-01-22 22:37         ` Rong Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox