linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] all: remove GENERIC_FIND_FIRST_BIT
@ 2021-05-10 23:34 Yury Norov
  2021-05-11 13:53 ` Alexander Lobakin
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Yury Norov @ 2021-05-10 23:34 UTC (permalink / raw)
  To: linux-kernel, linux-arch
  Cc: Yury Norov, Alexander Lobakin, Alexey Klimov, Andy Shevchenko,
	Anton Ivanov, Arnd Bergmann, Borislav Petkov, Catalin Marinas,
	Christian Borntraeger, Dan Williams, H. Peter Anvin,
	Heiko Carstens, Ingo Molnar, Jacob Keller, Jarkko Sakkinen,
	Jeff Dike, Kees Cook, Mark Brown, Matti Vaittinen, Nick Terrell,
	Palmer Dabbelt, Rasmus Villemoes, Richard Weinberger,
	Thomas Bogendoerfer, Thomas Gleixner, Vasily Gorbik,
	Vijayanand Jitta, Vineet Gupta, Will Deacon, Yogesh Lal

In the 5.12 cycle we enabled the GENERIC_FIND_FIRST_BIT config option
for ARM64 and MIPS. It increased performance and shrunk .text size; and
so far I didn't receive any negative feedback on the change.

https://lore.kernel.org/linux-arch/20210225135700.1381396-1-yury.norov@gmail.com/

I think it's time to make all architectures use find_{first,last}_bit()
unconditionally and remove the corresponding config option.

This patch doesn't introduce functional changes for arc, arm64, mips,
s390 and x86 because they already enable GENERIC_FIND_FIRST_BIT. There
will be no changes for arm because it implements find_{first,last}_bit
in arch code. For other architectures I expect improvement both in
performance and .text size.

It would be great if people with an access to real hardware would share
the output of bloat-o-meter and lib/find_bit_benchmark.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
---
 arch/arc/Kconfig                  |  1 -
 arch/arm64/Kconfig                |  1 -
 arch/mips/Kconfig                 |  1 -
 arch/s390/Kconfig                 |  1 -
 arch/x86/Kconfig                  |  1 -
 arch/x86/um/Kconfig               |  1 -
 include/asm-generic/bitops/find.h | 12 ------------
 lib/Kconfig                       |  3 ---
 8 files changed, 21 deletions(-)

diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index bc8d6aecfbbd..9c991ba50db3 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -19,7 +19,6 @@ config ARC
 	select COMMON_CLK
 	select DMA_DIRECT_REMAP
 	select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC)
-	select GENERIC_FIND_FIRST_BIT
 	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
 	select GENERIC_IRQ_SHOW
 	select GENERIC_PCI_IOMAP
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index e09a9591af45..9d5b36f7d981 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -108,7 +108,6 @@ config ARM64
 	select GENERIC_CPU_AUTOPROBE
 	select GENERIC_CPU_VULNERABILITIES
 	select GENERIC_EARLY_IOREMAP
-	select GENERIC_FIND_FIRST_BIT
 	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_IRQ_IPI
 	select GENERIC_IRQ_PROBE
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index b72458215d20..3ddae7918386 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -27,7 +27,6 @@ config MIPS
 	select GENERIC_ATOMIC64 if !64BIT
 	select GENERIC_CMOS_UPDATE
 	select GENERIC_CPU_AUTOPROBE
-	select GENERIC_FIND_FIRST_BIT
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_IOMAP
 	select GENERIC_IRQ_PROBE
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index c1ff874e6c2e..3a10ceb8a097 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -125,7 +125,6 @@ config S390
 	select GENERIC_CPU_AUTOPROBE
 	select GENERIC_CPU_VULNERABILITIES
 	select GENERIC_ENTRY
-	select GENERIC_FIND_FIRST_BIT
 	select GENERIC_GETTIMEOFDAY
 	select GENERIC_PTDUMP
 	select GENERIC_SMP_IDLE_THREAD
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index b83364a15d34..6a7d8305365e 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -123,7 +123,6 @@ config X86
 	select GENERIC_CPU_VULNERABILITIES
 	select GENERIC_EARLY_IOREMAP
 	select GENERIC_ENTRY
-	select GENERIC_FIND_FIRST_BIT
 	select GENERIC_IOMAP
 	select GENERIC_IRQ_EFFECTIVE_AFF_MASK	if SMP
 	select GENERIC_IRQ_MATRIX_ALLOCATOR	if X86_LOCAL_APIC
diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig
index 95d26a69088b..40d6a06e41c8 100644
--- a/arch/x86/um/Kconfig
+++ b/arch/x86/um/Kconfig
@@ -8,7 +8,6 @@ endmenu
 
 config UML_X86
 	def_bool y
-	select GENERIC_FIND_FIRST_BIT
 
 config 64BIT
 	bool "64-bit kernel" if "$(SUBARCH)" = "x86"
diff --git a/include/asm-generic/bitops/find.h b/include/asm-generic/bitops/find.h
index 0d132ee2a291..8a7b70c79e15 100644
--- a/include/asm-generic/bitops/find.h
+++ b/include/asm-generic/bitops/find.h
@@ -95,8 +95,6 @@ unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size,
 }
 #endif
 
-#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
-
 /**
  * find_first_bit - find the first set bit in a memory region
  * @addr: The address to start the search at
@@ -136,16 +134,6 @@ unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size)
 
 	return _find_first_zero_bit(addr, size);
 }
-#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
-
-#ifndef find_first_bit
-#define find_first_bit(addr, size) find_next_bit((addr), (size), 0)
-#endif
-#ifndef find_first_zero_bit
-#define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
-#endif
-
-#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
 
 #ifndef find_last_bit
 /**
diff --git a/lib/Kconfig b/lib/Kconfig
index a38cc61256f1..8346b3181214 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -59,9 +59,6 @@ config GENERIC_STRNLEN_USER
 config GENERIC_NET_UTILS
 	bool
 
-config GENERIC_FIND_FIRST_BIT
-	bool
-
 source "lib/math/Kconfig"
 
 config NO_GENERIC_PCI_IOPORT_MAP
-- 
2.25.1


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

end of thread, other threads:[~2021-06-09 17:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-10 23:34 [PATCH] all: remove GENERIC_FIND_FIRST_BIT Yury Norov
2021-05-11 13:53 ` Alexander Lobakin
2021-05-26 18:33 ` Will Deacon
2021-06-07 15:39 ` Andy Shevchenko
2021-06-09 17:27   ` Yury Norov

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).