Re: [PATCH -v3 0/15] x86: Remove support for TSC-less and CX8-less CPUs

Brian Gerst
2025-12-15T02:39:18Z

On Sun, Dec 14, 2025 at 3:47 AM Ingo Molnar <mingo@kernel.org> wrote:
>
> Changes in -v3:
>
> - Port to v6.19-rc1
>
> Changes in -v2:
>
> - Rebase to v6.15-rc6 + the relevant x86 tree branch
>
> - Use proper asm() constraints in the simplified CX8 methods (Uros Bizjak)
>
> - Remove stray family-4 default (suggested by Arnd Bergmann)
>
> - Simplify CX8 test (suggested by Uros Bizjak)
>
> - Add review tags
>
> The latest version of this series can be found at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git WIP.x86/cpu
>
> Thanks,
>
> Ingo
>
> =============>
>
> Original -v1 announcement:
>
> 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
>
> ================>
>

Does this also eliminate all processors that do not support CPUID?

Brian Gerst