From: Kees Cook <keescook@chromium.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Bill Metzenthen <billm@melbpc.org.au>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Andrew Morton <akpm@linux-foundation.org>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] x86: math-emu: limit MATH_EMULATION to 486SX compatibles
Date: Tue, 1 Oct 2019 14:54:27 -0700 [thread overview]
Message-ID: <201910011454.3B8E504091@keescook> (raw)
In-Reply-To: <20191001142344.1274185-2-arnd@arndb.de>
On Tue, Oct 01, 2019 at 04:23:35PM +0200, Arnd Bergmann wrote:
> The fpu emulation code is old and fragile in places, try to limit its
> use to builds for CPUs that actually use it. As far as I can tell,
> this is only true for i486sx compatibles, including the Cyrix 486SLC,
> AMD Am486SX and ÉLAN SC410, UMC U5S amd DM&P VortexSX86, all of which
> were relatively short-lived and got replaced with i486DX compatible
> processors soon after introduction, though the some of the embedded
> versions remained available much longer.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Nice, I like carving out CONFIG space for 486SX; this makes sense to me.
Reviewed-by: Kees Cook <keescook@chromium.org>
-Kees
> ---
> arch/x86/Kconfig | 2 +-
> arch/x86/Kconfig.cpu | 25 ++++++++++++++++---------
> arch/x86/Makefile_32.cpu | 1 +
> arch/x86/include/asm/module.h | 2 ++
> 4 files changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index f4d9d1e55e5c..77b02387bd0c 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -1751,7 +1751,7 @@ config X86_RESERVE_LOW
> config MATH_EMULATION
> bool
> depends on MODIFY_LDT_SYSCALL
> - prompt "Math emulation" if X86_32
> + 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
> diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
> index 228705a1232a..5f7bff9885a1 100644
> --- a/arch/x86/Kconfig.cpu
> +++ b/arch/x86/Kconfig.cpu
> @@ -50,12 +50,19 @@ choice
> See each option's help text for additional details. If you don't know
> what to do, choose "486".
>
> +config M486SX
> + bool "486SX"
> + depends on X86_32
> + ---help---
> + Select this for an 486-class CPU without an FPU such as
> + AMD/Cyrix/IBM/Intel SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5S.
> +
> config M486
> - bool "486"
> + bool "486DX"
> depends on X86_32
> ---help---
> Select this for an 486-class CPU such as AMD/Cyrix/IBM/Intel
> - 486DX/DX2/DX4 or SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
> + 486DX/DX2/DX4 and UMC U5D.
>
> config M586
> bool "586/K5/5x86/6x86/6x86MX"
> @@ -313,20 +320,20 @@ config X86_L1_CACHE_SHIFT
> int
> default "7" if MPENTIUM4 || MPSC
> default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
> - default "4" if MELAN || M486 || MGEODEGX1
> + default "4" if MELAN || M486SX || M486 || MGEODEGX1
> default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
>
> config X86_F00F_BUG
> def_bool y
> - depends on M586MMX || M586TSC || M586 || M486
> + depends on M586MMX || M586TSC || M586 || M486SX || M486
>
> config X86_INVD_BUG
> def_bool y
> - depends on M486
> + depends on M486SX || M486
>
> config X86_ALIGNMENT_16
> def_bool y
> - depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486 || MVIAC3_2 || MGEODEGX1
> + depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486SX || M486 || MVIAC3_2 || MGEODEGX1
>
> config X86_INTEL_USERCOPY
> def_bool y
> @@ -379,7 +386,7 @@ config X86_MINIMUM_CPU_FAMILY
>
> config X86_DEBUGCTLMSR
> def_bool y
> - depends on !(MK6 || MWINCHIPC6 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486) && !UML
> + depends on !(MK6 || MWINCHIPC6 || MWINCHIP3D || MCYRIXIII || M586MMX || M586TSC || M586 || M486SX || M486) && !UML
>
> menuconfig PROCESSOR_SELECT
> bool "Supported processor vendors" if EXPERT
> @@ -403,7 +410,7 @@ config CPU_SUP_INTEL
> config CPU_SUP_CYRIX_32
> default y
> bool "Support Cyrix processors" if PROCESSOR_SELECT
> - depends on M486 || M586 || M586TSC || M586MMX || (EXPERT && !64BIT)
> + depends on M486SX || M486 || M586 || M586TSC || M586MMX || (EXPERT && !64BIT)
> ---help---
> This enables detection, tunings and quirks for Cyrix processors
>
> @@ -471,7 +478,7 @@ config CPU_SUP_TRANSMETA_32
> config CPU_SUP_UMC_32
> default y
> bool "Support UMC processors" if PROCESSOR_SELECT
> - depends on M486 || (EXPERT && !64BIT)
> + depends on M486SX || M486 || (EXPERT && !64BIT)
> ---help---
> This enables detection, tunings and quirks for UMC processors
>
> diff --git a/arch/x86/Makefile_32.cpu b/arch/x86/Makefile_32.cpu
> index 1f5faf8606b4..cd3056759880 100644
> --- a/arch/x86/Makefile_32.cpu
> +++ b/arch/x86/Makefile_32.cpu
> @@ -10,6 +10,7 @@ else
> tune = $(call cc-option,-mcpu=$(1),$(2))
> endif
>
> +cflags-$(CONFIG_M486SX) += -march=i486
> cflags-$(CONFIG_M486) += -march=i486
> cflags-$(CONFIG_M586) += -march=i586
> cflags-$(CONFIG_M586TSC) += -march=i586
> diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
> index 7948a17febb4..c215d2762488 100644
> --- a/arch/x86/include/asm/module.h
> +++ b/arch/x86/include/asm/module.h
> @@ -15,6 +15,8 @@ struct mod_arch_specific {
>
> #ifdef CONFIG_X86_64
> /* X86_64 does not define MODULE_PROC_FAMILY */
> +#elif defined CONFIG_M486SX
> +#define MODULE_PROC_FAMILY "486SX "
> #elif defined CONFIG_M486
> #define MODULE_PROC_FAMILY "486 "
> #elif defined CONFIG_M586
> --
> 2.20.0
>
--
Kees Cook
next prev parent reply other threads:[~2019-10-01 21:54 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-01 14:23 [PATCH 1/2] x86: math-emu: check __copy_from_user result Arnd Bergmann
2019-10-01 14:23 ` [PATCH 2/2] x86: math-emu: limit MATH_EMULATION to 486SX compatibles Arnd Bergmann
2019-10-01 21:54 ` Kees Cook [this message]
2019-10-03 9:33 ` [tip: x86/cpu] x86/math-emu: Limit " tip-bot2 for Arnd Bergmann
2019-10-01 23:39 ` [PATCH 1/2] x86: math-emu: check __copy_from_user result Kees Cook
2019-10-02 7:11 ` Arnd Bergmann
2019-10-03 6:26 ` Kees Cook
2019-10-03 9:33 ` [tip: x86/cpu] x86/math-emu: Check __copy_from_user() result tip-bot2 for Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201910011454.3B8E504091@keescook \
--to=keescook@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=billm@melbpc.org.au \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.