linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs
@ 2025-04-25  8:41 Ingo Molnar
  2025-04-25  8:41 ` [PATCH 01/15] x86/cpu: Remove M486/M486SX/ELAN support Ingo Molnar
                   ` (17 more replies)
  0 siblings, 18 replies; 68+ messages in thread
From: Ingo Molnar @ 2025-04-25  8:41 UTC (permalink / raw)
  To: linux-kernel
  Cc: Ingo Molnar, Ahmed S . Darwish, Andrew Cooper, Ard Biesheuvel,
	Arnd Bergmann, Borislav Petkov, Dave Hansen, H . Peter Anvin,
	John Ogness, Linus Torvalds, Peter Zijlstra, Thomas Gleixner

In the x86 architecture we have various complicated hardware emulation
facilities on x86-32 to support ancient 32-bit CPUs that very very few
people are using with modern kernels. This compatibility glue is sometimes
even causing problems that people spend time to resolve, which time could
be spent on other things.

As Linus recently remarked:

 > I really get the feeling that it's time to leave i486 support behind.
 > There's zero real reason for anybody to waste one second of
 > development effort on this kind of issue.

This series increases minimum kernel support features to include TSC and
CX8 (CMPXCHG8B) hardware support, which removes 486 (and derivatives) support
and early-586 (and derivatives) support.

Doing this allows the removal of a fair amount of code:

 80 files changed, 38 insertions(+), 14104 deletions(-)

Much of which is the math-emu/ library - but even without math-emu,
the simplification is substantial:

 33 files changed, 38 insertions(+), 1081 deletions(-)

This series has 5 main parts:

1) Removal of the main CPU options and their dependencies in the Kconfig space:

     x86/cpu: Remove M486/M486SX/ELAN support
     x86/cpu: Remove CONFIG_MWINCHIP3D/MWINCHIPC6
     x86/cpu: Remove CPU_SUP_UMC_32 support
     x86/cpu: Remove TSC-less CONFIG_M586 support

2) Remove platform support for chips that weren't carried forward
   after these CPUs:

     x86/cpu, x86/platform, watchdog: Remove CONFIG_X86_RDC321X support
     x86/cpu: Remove the CONFIG_X86_INVD_BUG quirk
     x86/cpu, cpufreq: Remove AMD ELAN support

3) Remove math-emu/ support:

     x86/fpu: Remove MATH_EMULATION and related glue code
     x86/fpu: Remove the 'no387' boot option
     x86/fpu: Remove the math-emu/ FPU emulation library

4) Make CONFIG_X86_TSC unconditional and simplify the build-time TSC variances:

     x86/cpu: Make CONFIG_X86_TSC unconditional
     x86: Remove !CONFIG_X86_TSC code

   Note that runtime TSC disabling is still kept in its various forms.

   Also note that I kept CONFIG_X86_TSC itself, which is a proxy for
   a few drivers for 'sane x86', and which might be used in changes
   still in-flight. There's very little cost to keep this Kconfig option
   going forward, even though it's always-enabled.

5) Make CONFIG_X86_CX8 unconditional and remove build-time complications:

     x86/cpu: Make CONFIG_X86_CX8 unconditional
     x86/percpu: Remove !CONFIG_X86_CX8 methods
     x86/atomics: Remove !CONFIG_X86_CX8 methods

   Note that CONFIG_X86_CX8 is still kept, but not used by anything
   anymore. We can probably remove it entirely and there's no expectation
   of pending/outside code having dependency on this.

Note that there's still some stray references to removed platforms in
the main x86 Kconfig and Kconfig.x86, and the entire vector of CPU
options is probably overly complicated and should probably be replaced
with a single option - I'll clean that all up once there's rough
agreement about the scope of this RFC series.

The tree can also be found in my tree:

   git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git WIP.x86/cpu

Lightly tested.

Thanks,

    Ingo

================>
Ingo Molnar (15):
  x86/cpu: Remove M486/M486SX/ELAN support
  x86/cpu: Remove CONFIG_MWINCHIP3D/MWINCHIPC6
  x86/cpu: Remove CPU_SUP_UMC_32 support
  x86/cpu: Remove TSC-less CONFIG_M586 support
  x86/cpu, x86/platform, watchdog: Remove CONFIG_X86_RDC321X support
  x86/cpu: Remove the CONFIG_X86_INVD_BUG quirk
  x86/cpu, cpufreq: Remove AMD ELAN support
  x86/fpu: Remove MATH_EMULATION and related glue code
  x86/fpu: Remove the 'no387' boot option
  x86/fpu: Remove the math-emu/ FPU emulation library
  x86/cpu: Make CONFIG_X86_TSC unconditional
  x86: Remove !CONFIG_X86_TSC code
  x86/cpu: Make CONFIG_X86_CX8 unconditional
  x86/percpu: Remove !CONFIG_X86_CX8 methods
  x86/atomics: Remove !CONFIG_X86_CX8 methods

 Documentation/admin-guide/kernel-parameters.txt |    4 -
 arch/x86/Kconfig                                |   71 +-
 arch/x86/Kconfig.cpu                            |   95 +-
 arch/x86/Kconfig.cpufeatures                    |    2 -
 arch/x86/Makefile                               |    1 -
 arch/x86/Makefile_32.cpu                        |    8 -
 arch/x86/include/asm/asm-prototypes.h           |    4 -
 arch/x86/include/asm/atomic64_32.h              |   17 +-
 arch/x86/include/asm/cmpxchg_32.h               |   86 +-
 arch/x86/include/asm/fpu/api.h                  |    6 -
 arch/x86/include/asm/percpu.h                   |    6 +-
 arch/x86/include/asm/timex.h                    |    3 +-
 arch/x86/include/asm/trace_clock.h              |    8 -
 arch/x86/include/asm/tsc.h                      |   13 +-
 arch/x86/include/asm/vermagic.h                 |   12 -
 arch/x86/kernel/Makefile                        |    4 +-
 arch/x86/kernel/cpu/common.c                    |    7 -
 arch/x86/kernel/cpu/umc.c                       |   26 -
 arch/x86/kernel/fpu/core.c                      |    5 -
 arch/x86/kernel/fpu/init.c                      |    9 +-
 arch/x86/kernel/i8253.c                         |    2 +-
 arch/x86/kernel/traps.c                         |   21 -
 arch/x86/kernel/tsc.c                           |   13 -
 arch/x86/lib/Makefile                           |    4 -
 arch/x86/lib/atomic64_386_32.S                  |  195 ---
 arch/x86/lib/cmpxchg8b_emu.S                    |   97 --
 arch/x86/math-emu/Makefile                      |   30 -
 arch/x86/math-emu/README                        |  427 ------
 arch/x86/math-emu/control_w.h                   |   46 -
 arch/x86/math-emu/div_Xsig.S                    |  367 -----
 arch/x86/math-emu/div_small.S                   |   48 -
 arch/x86/math-emu/errors.c                      |  686 ----------
 arch/x86/math-emu/exception.h                   |   51 -
 arch/x86/math-emu/fpu_arith.c                   |  153 ---
 arch/x86/math-emu/fpu_asm.h                     |   32 -
 arch/x86/math-emu/fpu_aux.c                     |  267 ----
 arch/x86/math-emu/fpu_emu.h                     |  218 ---
 arch/x86/math-emu/fpu_entry.c                   |  718 ----------
 arch/x86/math-emu/fpu_etc.c                     |  136 --
 arch/x86/math-emu/fpu_proto.h                   |  157 ---
 arch/x86/math-emu/fpu_system.h                  |  130 --
 arch/x86/math-emu/fpu_tags.c                    |  116 --
 arch/x86/math-emu/fpu_trig.c                    | 1649 -----------------------
 arch/x86/math-emu/get_address.c                 |  401 ------
 arch/x86/math-emu/load_store.c                  |  322 -----
 arch/x86/math-emu/mul_Xsig.S                    |  179 ---
 arch/x86/math-emu/poly.h                        |  115 --
 arch/x86/math-emu/poly_2xm1.c                   |  146 --
 arch/x86/math-emu/poly_atan.c                   |  209 ---
 arch/x86/math-emu/poly_l2.c                     |  245 ----
 arch/x86/math-emu/poly_sin.c                    |  379 ------
 arch/x86/math-emu/poly_tan.c                    |  213 ---
 arch/x86/math-emu/polynom_Xsig.S                |  137 --
 arch/x86/math-emu/reg_add_sub.c                 |  334 -----
 arch/x86/math-emu/reg_compare.c                 |  479 -------
 arch/x86/math-emu/reg_constant.c                |  123 --
 arch/x86/math-emu/reg_constant.h                |   26 -
 arch/x86/math-emu/reg_convert.c                 |   47 -
 arch/x86/math-emu/reg_divide.c                  |  183 ---
 arch/x86/math-emu/reg_ld_str.c                  | 1220 -----------------
 arch/x86/math-emu/reg_mul.c                     |  116 --
 arch/x86/math-emu/reg_norm.S                    |  150 ---
 arch/x86/math-emu/reg_round.S                   |  711 ----------
 arch/x86/math-emu/reg_u_add.S                   |  169 ---
 arch/x86/math-emu/reg_u_div.S                   |  474 -------
 arch/x86/math-emu/reg_u_mul.S                   |  150 ---
 arch/x86/math-emu/reg_u_sub.S                   |  274 ----
 arch/x86/math-emu/round_Xsig.S                  |  142 --
 arch/x86/math-emu/shr_Xsig.S                    |   89 --
 arch/x86/math-emu/status_w.h                    |   68 -
 arch/x86/math-emu/version.h                     |   12 -
 arch/x86/math-emu/wm_shrx.S                     |  207 ---
 arch/x86/math-emu/wm_sqrt.S                     |  472 -------
 arch/x86/xen/Kconfig                            |    2 +-
 drivers/cpufreq/Kconfig.x86                     |   26 -
 drivers/cpufreq/Makefile                        |    2 -
 drivers/cpufreq/elanfreq.c                      |  227 ----
 drivers/cpufreq/sc520_freq.c                    |  137 --
 drivers/watchdog/Kconfig                        |    2 +-
 lib/atomic64_test.c                             |    4 +-
 80 files changed, 38 insertions(+), 14104 deletions(-)
 delete mode 100644 arch/x86/kernel/cpu/umc.c
 delete mode 100644 arch/x86/lib/atomic64_386_32.S
 delete mode 100644 arch/x86/lib/cmpxchg8b_emu.S
 delete mode 100644 arch/x86/math-emu/Makefile
 delete mode 100644 arch/x86/math-emu/README
 delete mode 100644 arch/x86/math-emu/control_w.h
 delete mode 100644 arch/x86/math-emu/div_Xsig.S
 delete mode 100644 arch/x86/math-emu/div_small.S
 delete mode 100644 arch/x86/math-emu/errors.c
 delete mode 100644 arch/x86/math-emu/exception.h
 delete mode 100644 arch/x86/math-emu/fpu_arith.c
 delete mode 100644 arch/x86/math-emu/fpu_asm.h
 delete mode 100644 arch/x86/math-emu/fpu_aux.c
 delete mode 100644 arch/x86/math-emu/fpu_emu.h
 delete mode 100644 arch/x86/math-emu/fpu_entry.c
 delete mode 100644 arch/x86/math-emu/fpu_etc.c
 delete mode 100644 arch/x86/math-emu/fpu_proto.h
 delete mode 100644 arch/x86/math-emu/fpu_system.h
 delete mode 100644 arch/x86/math-emu/fpu_tags.c
 delete mode 100644 arch/x86/math-emu/fpu_trig.c
 delete mode 100644 arch/x86/math-emu/get_address.c
 delete mode 100644 arch/x86/math-emu/load_store.c
 delete mode 100644 arch/x86/math-emu/mul_Xsig.S
 delete mode 100644 arch/x86/math-emu/poly.h
 delete mode 100644 arch/x86/math-emu/poly_2xm1.c
 delete mode 100644 arch/x86/math-emu/poly_atan.c
 delete mode 100644 arch/x86/math-emu/poly_l2.c
 delete mode 100644 arch/x86/math-emu/poly_sin.c
 delete mode 100644 arch/x86/math-emu/poly_tan.c
 delete mode 100644 arch/x86/math-emu/polynom_Xsig.S
 delete mode 100644 arch/x86/math-emu/reg_add_sub.c
 delete mode 100644 arch/x86/math-emu/reg_compare.c
 delete mode 100644 arch/x86/math-emu/reg_constant.c
 delete mode 100644 arch/x86/math-emu/reg_constant.h
 delete mode 100644 arch/x86/math-emu/reg_convert.c
 delete mode 100644 arch/x86/math-emu/reg_divide.c
 delete mode 100644 arch/x86/math-emu/reg_ld_str.c
 delete mode 100644 arch/x86/math-emu/reg_mul.c
 delete mode 100644 arch/x86/math-emu/reg_norm.S
 delete mode 100644 arch/x86/math-emu/reg_round.S
 delete mode 100644 arch/x86/math-emu/reg_u_add.S
 delete mode 100644 arch/x86/math-emu/reg_u_div.S
 delete mode 100644 arch/x86/math-emu/reg_u_mul.S
 delete mode 100644 arch/x86/math-emu/reg_u_sub.S
 delete mode 100644 arch/x86/math-emu/round_Xsig.S
 delete mode 100644 arch/x86/math-emu/shr_Xsig.S
 delete mode 100644 arch/x86/math-emu/status_w.h
 delete mode 100644 arch/x86/math-emu/version.h
 delete mode 100644 arch/x86/math-emu/wm_shrx.S
 delete mode 100644 arch/x86/math-emu/wm_sqrt.S
 delete mode 100644 drivers/cpufreq/elanfreq.c
 delete mode 100644 drivers/cpufreq/sc520_freq.c

-- 
2.45.2


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

end of thread, other threads:[~2025-05-15 16:32 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-25  8:41 [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs Ingo Molnar
2025-04-25  8:41 ` [PATCH 01/15] x86/cpu: Remove M486/M486SX/ELAN support Ingo Molnar
2025-04-25  8:41 ` [PATCH 02/15] x86/cpu: Remove CONFIG_MWINCHIP3D/MWINCHIPC6 Ingo Molnar
2025-04-25  8:42 ` [PATCH 03/15] x86/cpu: Remove CPU_SUP_UMC_32 support Ingo Molnar
2025-04-25  8:42 ` [PATCH 04/15] x86/cpu: Remove TSC-less CONFIG_M586 support Ingo Molnar
2025-04-25 15:09   ` H. Peter Anvin
2025-04-25  8:42 ` [PATCH 05/15] x86/cpu, x86/platform, watchdog: Remove CONFIG_X86_RDC321X support Ingo Molnar
2025-04-25  8:42 ` [PATCH 06/15] x86/cpu: Remove the CONFIG_X86_INVD_BUG quirk Ingo Molnar
2025-04-25  8:42 ` [PATCH 07/15] x86/cpu, cpufreq: Remove AMD ELAN support Ingo Molnar
2025-04-25  8:42 ` [PATCH 08/15] x86/fpu: Remove MATH_EMULATION and related glue code Ingo Molnar
2025-04-25  8:42 ` [PATCH 09/15] x86/fpu: Remove the 'no387' boot option Ingo Molnar
2025-04-25  8:42 ` [PATCH 10/15] x86/fpu: Remove the math-emu/ FPU emulation library Ingo Molnar
2025-04-25  8:42 ` [PATCH 11/15] x86/cpu: Make CONFIG_X86_TSC unconditional Ingo Molnar
2025-04-25  8:42 ` [PATCH 12/15] x86: Remove !CONFIG_X86_TSC code Ingo Molnar
2025-04-25  8:42 ` [PATCH 13/15] x86/cpu: Make CONFIG_X86_CX8 unconditional Ingo Molnar
2025-04-25 12:10   ` Arnd Bergmann
2025-04-25 15:15     ` H. Peter Anvin
2025-04-25 21:54       ` Arnd Bergmann
2025-04-27  9:25         ` Ingo Molnar
2025-04-27 17:32           ` Arnd Bergmann
2025-04-27 21:26             ` H. Peter Anvin
2025-04-28  9:16             ` Ingo Molnar
2025-04-28 11:21               ` Arnd Bergmann
2025-04-29 10:22                 ` Ingo Molnar
2025-04-29 12:10                   ` Arnd Bergmann
2025-04-27  8:15     ` Ingo Molnar
2025-04-25  8:42 ` [PATCH 14/15] x86/percpu: Remove !CONFIG_X86_CX8 methods Ingo Molnar
2025-04-25 14:05   ` Uros Bizjak
2025-04-27  7:46     ` [PATCH -v2 " Ingo Molnar
2025-04-25  8:42 ` [PATCH 15/15] x86/atomics: " Ingo Molnar
2025-04-25 13:55   ` Arnd Bergmann
2025-04-25 14:10   ` Uros Bizjak
2025-04-25 15:00     ` Brian Gerst
2025-04-27  8:23       ` Ingo Molnar
2025-04-27  8:26     ` Ingo Molnar
2025-04-27 10:31       ` Uros Bizjak
2025-05-15  8:49         ` Ingo Molnar
2025-04-25 11:13 ` [RFC PATCH 0/15] x86: Remove support for TSC-less and CX8-less CPUs Arnd Bergmann
2025-04-26  8:26 ` Pavel Machek
2025-05-05  8:53 ` Maciej W. Rozycki
2025-05-05 12:48   ` H. Peter Anvin
2025-05-05 13:04     ` Maciej W. Rozycki
2025-05-05 19:57       ` H. Peter Anvin
2025-05-05 20:54         ` Borislav Petkov
2025-05-06 13:51           ` Maciej W. Rozycki
2025-05-06 14:16             ` Borislav Petkov
2025-05-08 14:51               ` Maciej W. Rozycki
2025-05-08 20:11                 ` Borislav Petkov
2025-05-12 12:55                   ` Maciej W. Rozycki
2025-05-12 13:48                     ` Borislav Petkov
2025-05-12 17:29                       ` Maciej W. Rozycki
2025-05-13  2:00                         ` Linus Torvalds
2025-05-13  3:48                           ` H. Peter Anvin
2025-05-13  5:43                           ` John Paul Adrian Glaubitz
2025-05-13 21:55                             ` Maciej W. Rozycki
2025-05-13 22:02                               ` Linus Torvalds
2025-05-13 22:06                                 ` H. Peter Anvin
2025-05-15 16:32                                 ` Maciej W. Rozycki
2025-05-06 13:48         ` Maciej W. Rozycki
2025-05-06 13:54           ` John Paul Adrian Glaubitz
2025-05-05 15:59   ` Linus Torvalds
2025-05-06 13:53     ` Maciej W. Rozycki
2025-05-06 16:44       ` H. Peter Anvin
2025-05-06 17:11         ` Linus Torvalds
2025-05-06 17:51           ` H. Peter Anvin
2025-05-08 14:54             ` Maciej W. Rozycki
2025-05-08 14:53           ` Maciej W. Rozycki
2025-05-08 14:51         ` Maciej W. Rozycki

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