diff --git a/arch/Kconfig b/arch/Kconfig
index a699f3767be4d83ef0efbfac64a7245f75ca1ce0..1455579791ec02514a5d616a4b6749cbec3185b0 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -216,9 +216,6 @@ config USE_GENERIC_SMP_HELPERS
 config GENERIC_SMP_IDLE_THREAD
        bool
 
-config GENERIC_IDLE_LOOP
-       bool
-
 # Select if arch init_task initializer is different to init/init_task.c
 config ARCH_INIT_TASK
        bool
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 60469820a6c5967966c9ee406bfbfd82ee367bdd..8a33ba01301ff5cb4966455699a164c27feb1484 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -17,7 +17,6 @@ config ALPHA
 	select ARCH_WANT_IPC_PARSE_VERSION
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select GENERIC_CMOS_UPDATE
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index b006977a15162b37d1cd45abe5a2643dd7e7fb4e..e6f4eca09ee36f5cbbe9ade6aadf07aa17ef6332 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -14,7 +14,6 @@ config ARC
 	select GENERIC_ATOMIC64
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_FIND_FIRST_BIT
-	select GENERIC_IDLE_LOOP
 	# for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
 	select GENERIC_IRQ_SHOW
 	select GENERIC_KERNEL_EXECVE
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 128551fcc6dd5339a513638c87557b926bb98413..fcedd612c54c0f9bf64c7bb8ef3c09633b6d578f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -15,7 +15,6 @@ config ARM
 	select GENERIC_IRQ_SHOW
 	select GENERIC_PCI_IOMAP
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index ca2c871795c551e21e3400e250a22dc46a98a77b..9b6d19f74078e0a2118e6fbd1c517e5f4f82203c 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -9,7 +9,6 @@ config ARM64
 	select CLONE_BACKWARDS
 	select COMMON_CLK
 	select GENERIC_CLOCKEVENTS
-	select GENERIC_IDLE_LOOP
 	select GENERIC_IOMAP
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index bbecda4c33733e3e9425da970795d6e3196c1e0b..c1a868d398bd284f6c7552d31279e24215792f51 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -10,7 +10,6 @@ config AVR32
 	select VIRT_TO_BUS
 	select GENERIC_IRQ_PROBE
 	select GENERIC_ATOMIC64
-	select GENERIC_IDLE_LOOP
 	select HARDIRQS_SW_RESEND
 	select GENERIC_IRQ_SHOW
 	select ARCH_HAVE_CUSTOM_GPIO_H
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index 3d769a7c494103929f46efeb4eda59d8b3ec69ca..c3f2e0bc644aed0b64e86b7a801424d5cb239b9a 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -41,7 +41,6 @@ config BLACKFIN
 	select USE_GENERIC_SMP_HELPERS if SMP
 	select HAVE_NMI_WATCHDOG if NMI_WATCHDOG
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS
 	select HAVE_MOD_ARCH_SPECIFIC
 	select MODULES_USE_ELF_RELA
diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig
index af2aa4b44140d73b2a168debf4f772f1229f8ee3..f6a3648f5ec3c7030a8c4294be4e3bee54a25b6c 100644
--- a/arch/c6x/Kconfig
+++ b/arch/c6x/Kconfig
@@ -18,7 +18,6 @@ config C6X
 	select OF_EARLY_FLATTREE
 	select GENERIC_CLOCKEVENTS
 	select MODULES_USE_ELF_RELA
-	select GENERIC_IDLE_LOOP
 
 config MMU
 	def_bool n
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 1dd36355a3cd2e17d9000e3fb5a36b2610808ac0..06dd026533e3b758b68091bc0a8c754b3084f0da 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -48,7 +48,6 @@ config CRIS
 	select GENERIC_IRQ_SHOW
 	select GENERIC_IOMAP
 	select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32
-	select GENERIC_IDLE_LOOP
 	select GENERIC_CMOS_UPDATE
 	select MODULES_USE_ELF_RELA
 	select CLONE_BACKWARDS2
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 0d998db2039e16188de53d3e041e655b3622f5d2..2ce731f9aa4d522abfc7d2fbcfff33483a2b2154 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -8,7 +8,6 @@ config FRV
 	select HAVE_GENERIC_HARDIRQS
 	select VIRT_TO_BUS
 	select GENERIC_IRQ_SHOW
-	select GENERIC_IDLE_LOOP
 	select HAVE_DEBUG_BUGVERBOSE
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_CPU_DEVICES
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 5374975fe8002e3735a3aea922572d4190cf564d..79250de1b12a434f7b0d945cb6b4b42559a9d101 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -8,7 +8,6 @@ config H8300
 	select VIRT_TO_BUS
 	select ARCH_WANT_IPC_PARSE_VERSION
 	select GENERIC_IRQ_SHOW
-	select GENERIC_IDLE_LOOP
 	select GENERIC_CPU_DEVICES
 	select MODULES_USE_ELF_RELA
 	select OLD_SIGSUSPEND3
diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig
index 6e3710e84a6c18f5ea35e961999aa3adeccb5c96..e4decc6b8947e4fe68180010a524e0f7b6600084 100644
--- a/arch/hexagon/Kconfig
+++ b/arch/hexagon/Kconfig
@@ -24,7 +24,6 @@ config HEXAGON
 	select NO_IOPORT
 	select GENERIC_IOMAP
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select STACKTRACE_SUPPORT
 	select KTIME_SCALAR
 	select GENERIC_CLOCKEVENTS
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index e0b39c3cb789beca588883bcb00fddee9d3e2609..9a02f71c6b1f7cb5e8339e55f77bb82ad9b8d8d3 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -35,7 +35,6 @@ config IA64
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_IOMAP
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select ARCH_INIT_TASK
 	select ARCH_TASK_STRUCT_ALLOCATOR
 	select ARCH_THREAD_INFO_ALLOCATOR
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index af814fe478aea246dfca2f73e8fd0f7a0fce0d5b..bcd17b20657128ef42c2f68f0dd07880467f1c2c 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -13,7 +13,6 @@ config M32R
 	select VIRT_TO_BUS
 	select GENERIC_IRQ_PROBE
 	select GENERIC_IRQ_SHOW
-	select GENERIC_IDLE_LOOP
 	select GENERIC_ATOMIC64
 	select ARCH_USES_GETTIMEOFFSET
 	select MODULES_USE_ELF_RELA
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 41859405a853eef7a7a74a69da8e17d5f46676b8..6de813370b8c7d01e8b98d78634baef15da6fe3b 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -6,7 +6,6 @@ config M68K
 	select HAVE_DEBUG_BUGVERBOSE
 	select HAVE_GENERIC_HARDIRQS
 	select GENERIC_IRQ_SHOW
-	select GENERIC_IDLE_LOOP
 	select GENERIC_ATOMIC64
 	select HAVE_UID16
 	select VIRT_TO_BUS
diff --git a/arch/metag/Kconfig b/arch/metag/Kconfig
index 3164f6cebe2b86f13126e71da28ff0fa4684852d..afc8973d14883ee340ba9531c7c82b1585f9c9cd 100644
--- a/arch/metag/Kconfig
+++ b/arch/metag/Kconfig
@@ -7,7 +7,6 @@ config METAG
 	select EMBEDDED
 	select GENERIC_ATOMIC64
 	select GENERIC_CLOCKEVENTS
-	select GENERIC_IDLE_LOOP
 	select GENERIC_IRQ_SHOW
 	select GENERIC_SMP_IDLE_THREAD
 	select HAVE_64BIT_ALIGNED_ACCESS
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index 0bb0d519a2336cd3f7e6be4cfc7b419259bef01b..a827057c79273dabf7b0fff60120d24e248424a4 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -26,7 +26,6 @@ config MICROBLAZE
 	select GENERIC_CPU_DEVICES
 	select GENERIC_ATOMIC64
 	select GENERIC_CLOCKEVENTS
-	select GENERIC_IDLE_LOOP
 	select GENERIC_IDLE_POLL_SETUP
 	select MODULES_USE_ELF_RELA
 	select CLONE_BACKWARDS
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index e1a3d02af637b87d8b85e2482b1932c294ad6928..51244bf972718a54876e7ba2ab78ae1790c98e59 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -34,7 +34,6 @@ config MIPS
 	select HAVE_MEMBLOCK_NODE_MAP
 	select ARCH_DISCARD_MEMBLOCK
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select BUILDTIME_EXTABLE_SORT
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_CMOS_UPDATE
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index ae7158b69c9cc7d4f432858cf13f0ec1cbc10a98..428da175d0734abab132fbbbad57154b05530b1d 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -13,7 +13,6 @@ config MN10300
 	select MODULES_USE_ELF_RELA
 	select OLD_SIGSUSPEND3
 	select OLD_SIGACTION
-	select GENERIC_IDLE_LOOP
 
 config AM33_2
 	def_bool n
diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
index e111b5200cd9f8798f5813e2f7f8fb9620f42f2b..9ab3bf2eca8d2efeef9f0adbadc8b94c356cb857 100644
--- a/arch/openrisc/Kconfig
+++ b/arch/openrisc/Kconfig
@@ -21,7 +21,6 @@ config OPENRISC
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
-	select GENERIC_IDLE_LOOP
 	select MODULES_USE_ELF_RELA
 
 config MMU
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 0821e702d03f6fd1fa5c60a277c1fa44aa0decc7..0339181bf3ac3d377db760ef93a7e74933288eee 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -18,7 +18,6 @@ config PARISC
 	select GENERIC_PCI_IOMAP
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select GENERIC_STRNCPY_FROM_USER
 	select SYSCTL_ARCH_UNALIGN_ALLOW
 	select HAVE_MOD_ARCH_SPECIFIC
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 19de32c52da54b5df4c61852d1f5fb3b02c9fd65..ea5bb045983a19070958b003a8408841bce35a7c 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -133,7 +133,6 @@ config PPC
 	select HAVE_ARCH_JUMP_LABEL
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select GENERIC_CMOS_UPDATE
 	select GENERIC_TIME_VSYSCALL_OLD
 	select GENERIC_CLOCKEVENTS
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 749513d73e472172a6f68302cbfe971fd38ab680..eb8fb629f00bba774b195a475471d630d6bd8bd0 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -97,7 +97,6 @@ config S390
 	select CLONE_BACKWARDS2
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_CPU_DEVICES if !SMP
-	select GENERIC_IDLE_LOOP
 	select GENERIC_KERNEL_THREAD
 	select GENERIC_SMP_IDLE_THREAD
 	select GENERIC_TIME_VSYSCALL_OLD
diff --git a/arch/score/Kconfig b/arch/score/Kconfig
index eaac45de65be19206eaad19abd568d37d3c058e2..c8def8bc90209578a5a6d5cfaf8f9f258c4ec7fb 100644
--- a/arch/score/Kconfig
+++ b/arch/score/Kconfig
@@ -11,7 +11,6 @@ config SCORE
        select ARCH_DISCARD_MEMBLOCK
        select GENERIC_CPU_DEVICES
        select GENERIC_CLOCKEVENTS
-       select GENERIC_IDLE_LOOP
        select HAVE_MOD_ARCH_SPECIFIC
 	select VIRT_TO_BUS
 	select MODULES_USE_ELF_REL
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 0917fc3f39c012e2c28109b69b76a359b417c811..1ea597c6497a826daeb79b8042cf58c3621b6cdb 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -33,7 +33,6 @@ config SUPERH
 	select GENERIC_ATOMIC64
 	select GENERIC_IRQ_SHOW
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index ee5eacc5a6499c8d3cf856ca6ae02307ebbf69a2..3d361f236308c13cde14286379ec418af3e52990 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -37,7 +37,6 @@ config SPARC
 	select GENERIC_SMP_IDLE_THREAD
 	select GENERIC_CMOS_UPDATE
 	select GENERIC_CLOCKEVENTS
-	select GENERIC_IDLE_LOOP
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
 	select MODULES_USE_ELF_RELA
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 85b2edeade31a877ca99933cd6290be8d68b4383..25877aebc685fcde958145add51e09e7fcbcc341 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -22,7 +22,6 @@ config TILE
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 	select GENERIC_CLOCKEVENTS
 	select MODULES_USE_ELF_RELA
-	select GENERIC_IDLE_LOOP
 
 # FIXME: investigate whether we need/want these options.
 #	select HAVE_IOREMAP_PROT
diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index 57834067a5118bb43391c94c8a51cc5c3180efca..bceee6623b00134023918cd5b62ec6144e3c66eb 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common
@@ -12,7 +12,6 @@ config UML
 	select GENERIC_CPU_DEVICES
 	select GENERIC_IO
 	select GENERIC_CLOCKEVENTS
-	select GENERIC_IDLE_LOOP
 	select TTY # Needed for line.c
 
 config MMU
diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig
index e12678daaed110011940fb77a304b23ab9d0f668..2943e3acdf0cba611bcd0fc222fbc59fb3f6602a 100644
--- a/arch/unicore32/Kconfig
+++ b/arch/unicore32/Kconfig
@@ -17,7 +17,6 @@ config UNICORE32
 	select ARCH_WANT_FRAME_POINTERS
 	select GENERIC_IOMAP
 	select MODULES_USE_ELF_REL
-	select GENERIC_IDLE_LOOP
 	help
 	  UniCore-32 is 32-bit Instruction Set Architecture,
 	  including a series of low-power-consumption RISC chip
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 734152d85fd0f23b24c70e10d83433ae77980274..fcf293994992e166129782d9f1e61d1d58d2eaab 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -97,7 +97,6 @@ config X86
 	select GENERIC_IOMAP
 	select DCACHE_WORD_ACCESS
 	select GENERIC_SMP_IDLE_THREAD
-	select GENERIC_IDLE_LOOP
 	select ARCH_WANT_IPC_PARSE_VERSION if X86_32
 	select HAVE_ARCH_SECCOMP_FILTER
 	select BUILDTIME_EXTABLE_SORT
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index e0144ff4624d54cc30930a2ea0d6771111c2413a..b09de49dbec5cf0a7d65590afc7c2a97158399bf 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -19,7 +19,6 @@ config XTENSA
 	select CLONE_BACKWARDS
 	select IRQ_DOMAIN
 	select HAVE_OPROFILE
-	select GENERIC_IDLE_LOOP
 	help
 	  Xtensa processors are 32-bit RISC machines designed by Tensilica
 	  primarily for embedded systems.  These processors are both
diff --git a/kernel/cpu/idle.c b/kernel/cpu/idle.c
index 54c3203839342f7d4ead28f3051692979ef629b4..168cf407a25493d17e91ceb677c75f806c52005b 100644
--- a/kernel/cpu/idle.c
+++ b/kernel/cpu/idle.c
@@ -10,13 +10,6 @@
 
 #include <trace/events/power.h>
 
-#ifndef CONFIG_GENERIC_IDLE_LOOP
-void cpu_startup_entry(enum cpuhp_state state)
-{
-	cpu_idle();
-}
-#else
-
 static int __read_mostly cpu_idle_force_poll;
 
 void cpu_idle_poll_ctrl(bool enable)
@@ -112,4 +105,3 @@ void cpu_startup_entry(enum cpuhp_state state)
 	arch_cpu_idle_prepare();
 	cpu_idle_loop();
 }
-#endif