mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
x86/fpu: Remove MATH_EMULATION and related glue code
Now that support for 486 CPUs is gone upstream, remove the x86 mathemu code integration. Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Dave Hansen <dave.hansen@linux.intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20250425084216.3913608-9-mingo@kernel.org
This commit is contained in:
parent
7b49a3fb69
commit
ab05214025
|
|
@ -1633,33 +1633,6 @@ config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
|
|||
Set whether the default state of memory_corruption_check is
|
||||
on or off.
|
||||
|
||||
config MATH_EMULATION
|
||||
bool
|
||||
depends on MODIFY_LDT_SYSCALL
|
||||
prompt "Math emulation" if X86_32 && (M486SX || MELAN)
|
||||
help
|
||||
Linux can emulate a math coprocessor (used for floating point
|
||||
operations) if you don't have one. 486DX and Pentium processors have
|
||||
a math coprocessor built in, 486SX and 386 do not, unless you added
|
||||
a 487DX or 387, respectively. (The messages during boot time can
|
||||
give you some hints here ["man dmesg"].) Everyone needs either a
|
||||
coprocessor or this emulation.
|
||||
|
||||
If you don't have a math coprocessor, you need to say Y here; if you
|
||||
say Y here even though you have a coprocessor, the coprocessor will
|
||||
be used nevertheless. (This behavior can be changed with the kernel
|
||||
command line option "no387", which comes handy if your coprocessor
|
||||
is broken. Try "man bootparam" or see the documentation of your boot
|
||||
loader (lilo or loadlin) about how to pass options to the kernel at
|
||||
boot time.) This means that it is a good idea to say Y here if you
|
||||
intend to use this kernel on different machines.
|
||||
|
||||
More information about the internals of the Linux math coprocessor
|
||||
emulation can be found in <file:arch/x86/math-emu/README>.
|
||||
|
||||
If you are not sure, say Y; apart from resulting in a 66 KB bigger
|
||||
kernel, it won't hurt.
|
||||
|
||||
config MTRR
|
||||
def_bool y
|
||||
prompt "MTRR (Memory Type Range Register) support" if EXPERT
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ config X86_REQUIRED_FEATURE_UP
|
|||
|
||||
config X86_REQUIRED_FEATURE_FPU
|
||||
def_bool y
|
||||
depends on !MATH_EMULATION
|
||||
|
||||
config X86_REQUIRED_FEATURE_PAE
|
||||
def_bool y
|
||||
|
|
|
|||
|
|
@ -276,7 +276,6 @@ archprepare: $(cpufeaturemasks.hdr)
|
|||
libs-y += arch/x86/lib/
|
||||
|
||||
# drivers-y are linked after core-y
|
||||
drivers-$(CONFIG_MATH_EMULATION) += arch/x86/math-emu/
|
||||
drivers-$(CONFIG_PCI) += arch/x86/pci/
|
||||
|
||||
# suspend and hibernation support
|
||||
|
|
|
|||
|
|
@ -119,12 +119,6 @@ extern void fpu__init_system(void);
|
|||
extern void fpu__init_check_bugs(void);
|
||||
extern void fpu__resume_cpu(void);
|
||||
|
||||
#ifdef CONFIG_MATH_EMULATION
|
||||
extern void fpstate_init_soft(struct swregs_state *soft);
|
||||
#else
|
||||
static inline void fpstate_init_soft(struct swregs_state *soft) {}
|
||||
#endif
|
||||
|
||||
/* State tracking */
|
||||
DECLARE_PER_CPU(bool, kernel_fpu_allowed);
|
||||
DECLARE_PER_CPU(struct fpu *, fpu_fpregs_owner_ctx);
|
||||
|
|
|
|||
|
|
@ -558,11 +558,6 @@ static inline void fpstate_init_fstate(struct fpstate *fpstate)
|
|||
*/
|
||||
void fpstate_init_user(struct fpstate *fpstate)
|
||||
{
|
||||
if (!cpu_feature_enabled(X86_FEATURE_FPU)) {
|
||||
fpstate_init_soft(&fpstate->regs.soft);
|
||||
return;
|
||||
}
|
||||
|
||||
xstate_init_xcomp_bv(&fpstate->regs.xsave, fpstate->xfeatures);
|
||||
|
||||
if (cpu_feature_enabled(X86_FEATURE_FXSR))
|
||||
|
|
|
|||
|
|
@ -36,12 +36,7 @@ static void fpu__init_cpu_generic(void)
|
|||
write_cr0(cr0);
|
||||
|
||||
/* Flush out any pending x87 state: */
|
||||
#ifdef CONFIG_MATH_EMULATION
|
||||
if (!boot_cpu_has(X86_FEATURE_FPU))
|
||||
;
|
||||
else
|
||||
#endif
|
||||
asm volatile ("fninit");
|
||||
asm volatile ("fninit");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -86,13 +81,11 @@ static void __init fpu__init_system_early_generic(void)
|
|||
setup_clear_cpu_cap(X86_FEATURE_FPU);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_MATH_EMULATION
|
||||
if (!test_cpu_cap(&boot_cpu_data, X86_FEATURE_FPU)) {
|
||||
pr_emerg("x86/fpu: Giving up, no FPU found and no math emulation present\n");
|
||||
for (;;)
|
||||
asm volatile("hlt");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1543,20 +1543,6 @@ DEFINE_IDTENTRY(exc_device_not_available)
|
|||
if (handle_xfd_event(regs))
|
||||
return;
|
||||
|
||||
#ifdef CONFIG_MATH_EMULATION
|
||||
if (!boot_cpu_has(X86_FEATURE_FPU) && (cr0 & X86_CR0_EM)) {
|
||||
struct math_emu_info info = { };
|
||||
|
||||
cond_local_irq_enable(regs);
|
||||
|
||||
info.regs = regs;
|
||||
math_emulate(&info);
|
||||
|
||||
cond_local_irq_disable(regs);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This should not happen. */
|
||||
if (WARN(cr0 & X86_CR0_TS, "CR0.TS was set")) {
|
||||
/* Try to fix it up and carry on. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user