2020-08-01 06:12:48

by Jiaxun Yang

[permalink] [raw]
Subject: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode

Requested by downstream distros, a Kconfig option for default
IEEE 754 conformance mode allows them to set their mode to
relaxed by default.

Signed-off-by: Jiaxun Yang <[email protected]>
Reviewed-by: WANG Xuerui <[email protected]>
Reviewed-by: Serge Semin <[email protected]>
Reviewed-by: Huacai Chen <[email protected]>

--
v2: Reword according to Xuerui's suggestion.
---
arch/mips/Kconfig | 22 ++++++++++++++++++++++
arch/mips/kernel/cpu-probe.c | 12 +++++++++++-
2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index eaf7519e3033..ac35df2b9133 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2899,6 +2899,28 @@ config MIPS_NR_CPU_NR_MAP
default 1024 if MIPS_NR_CPU_NR_MAP_1024
default NR_CPUS if !MIPS_NR_CPU_NR_MAP_1024

+choice
+ prompt "Default IEEE 754 conformance mode"
+ default IEEE754_DEFAULT_STRICT
+ help
+ Sets the default IEEE 754 conformance mode, same as overriding the
+ default value for the ieee754= kernel parameter. See the kernel
+ parameter for details.
+
+ config IEEE754_DEFAULT_STRICT
+ bool "Strict"
+
+ config IEEE754_DEFAULT_LEGACY
+ bool "Legacy"
+
+ config IEEE754_DEFAULT_STD2008
+ bool "2008"
+
+ config IEEE754_DEFAULT_RELAXED
+ bool "Relaxed"
+
+endchoice
+
#
# Timer Interrupt Frequency Configuration
#
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index c231c1b67889..a5b8fe019afc 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -157,7 +157,17 @@ static void cpu_set_fpu_2008(struct cpuinfo_mips *c)
* IEEE 754 conformance mode to use. Affects the NaN encoding and the
* ABS.fmt/NEG.fmt execution mode.
*/
-static enum { STRICT, LEGACY, STD2008, RELAXED } ieee754 = STRICT;
+enum ieee754_mode { STRICT, LEGACY, STD2008, RELAXED };
+
+#if defined(CONFIG_IEEE754_DEFAULT_STRICT)
+static enum ieee754_mode ieee754 = STRICT;
+#elif defined(CONFIG_IEEE754_DEFAULT_LEGACY)
+static enum ieee754_mode ieee754 = LEGACY;
+#elif defined(CONFIG_IEEE754_DEFAULT_STD2008)
+static enum ieee754_mode ieee754 = STD2008;
+#elif defined(CONFIG_IEEE754_DEFAULT_RELAXED)
+static enum ieee754_mode ieee754 = RELAXED;
+#endif

/*
* Set the IEEE 754 NaN encodings and the ABS.fmt/NEG.fmt execution modes
--
2.28.0.rc1


2020-08-05 16:48:09

by Jiaxun Yang

[permalink] [raw]
Subject: Re: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode



?? 2020/8/1 14:11, Jiaxun Yang д??:
> Requested by downstream distros, a Kconfig option for default
> IEEE 754 conformance mode allows them to set their mode to
> relaxed by default.
>
> Signed-off-by: Jiaxun Yang <[email protected]>
> Reviewed-by: WANG Xuerui <[email protected]>
> Reviewed-by: Serge Semin <[email protected]>
> Reviewed-by: Huacai Chen <[email protected]>
>
> --
> v2: Reword according to Xuerui's suggestion.
> ---
Hi Thomas,

Is it possible to get this patch into 5.9 merge window?
I think it have got enough review tag, and the config option was requested
by a Debian developer. The next Debian release will take 5.9 lts kernel and
they don't want to ship a non-bootable kernel in a major release.

Thanks.

- Jiaxun

2020-08-06 08:19:06

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode

On Wed, Aug 05, 2020 at 09:59:15PM +0800, Jiaxun Yang wrote:
>
>
> 在 2020/8/1 14:11, Jiaxun Yang 写道:
> >Requested by downstream distros, a Kconfig option for default
> >IEEE 754 conformance mode allows them to set their mode to
> >relaxed by default.
> >
> >Signed-off-by: Jiaxun Yang <[email protected]>
> >Reviewed-by: WANG Xuerui <[email protected]>
> >Reviewed-by: Serge Semin <[email protected]>
> >Reviewed-by: Huacai Chen <[email protected]>
> >
> >--
> >v2: Reword according to Xuerui's suggestion.
> >---
> Hi Thomas,
>
> Is it possible to get this patch into 5.9 merge window?
> I think it have got enough review tag, and the config option was requested
> by a Debian developer. The next Debian release will take 5.9 lts kernel and
> they don't want to ship a non-bootable kernel in a major release.

no I won't include it into 5.9, I need to first go through links pointed
to by Maciej and fully understand what a proper solution could be.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]

2020-08-06 10:49:43

by WANG Xuerui

[permalink] [raw]
Subject: Re: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode

Hi Jiaxun,


On 2020/8/5 21:59, Jiaxun Yang wrote:
>
>
> ?? 2020/8/1 14:11, Jiaxun Yang д??:
>> Requested by downstream distros, a Kconfig option for default
>> IEEE 754 conformance mode allows them to set their mode to
>> relaxed by default.
>>
>> Signed-off-by: Jiaxun Yang <[email protected]>
>> Reviewed-by: WANG Xuerui <[email protected]>
>> Reviewed-by: Serge Semin <[email protected]>
>> Reviewed-by: Huacai Chen <[email protected]>
>>
>> --
>> v2: Reword according to Xuerui's suggestion.
>> ---
> Hi Thomas,
>
> Is it possible to get this patch into 5.9 merge window?
> I think it have got enough review tag, and the config option was
> requested
> by a Debian developer. The next Debian release will take 5.9 lts
> kernel and
> they don't want to ship a non-bootable kernel in a major release.

I have an idea. Can the downstream packagers make use of the builtin
command line config options, to inject the "ieee754=relaxed" or whatever
option necessary? If it is acceptable this patch should not be necessary
in the short term.

>
> Thanks.
>
> - Jiaxun

2020-08-07 02:09:10

by Huacai Chen

[permalink] [raw]
Subject: Re: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode

Hi, Xuerui,

On Thu, Aug 6, 2020 at 6:54 PM WANG Xuerui <[email protected]> wrote:
>
> Hi Jiaxun,
>
>
> On 2020/8/5 21:59, Jiaxun Yang wrote:
> >
> >
> > 在 2020/8/1 14:11, Jiaxun Yang 写道:
> >> Requested by downstream distros, a Kconfig option for default
> >> IEEE 754 conformance mode allows them to set their mode to
> >> relaxed by default.
> >>
> >> Signed-off-by: Jiaxun Yang <[email protected]>
> >> Reviewed-by: WANG Xuerui <[email protected]>
> >> Reviewed-by: Serge Semin <[email protected]>
> >> Reviewed-by: Huacai Chen <[email protected]>
> >>
> >> --
> >> v2: Reword according to Xuerui's suggestion.
> >> ---
> > Hi Thomas,
> >
> > Is it possible to get this patch into 5.9 merge window?
> > I think it have got enough review tag, and the config option was
> > requested
> > by a Debian developer. The next Debian release will take 5.9 lts
> > kernel and
> > they don't want to ship a non-bootable kernel in a major release.
>
> I have an idea. Can the downstream packagers make use of the builtin
> command line config options, to inject the "ieee754=relaxed" or whatever
> option necessary? If it is acceptable this patch should not be necessary
> in the short term.
Built-in "ieee754=relaxed" is already in upstream for Loongson-3.

Huacai
>
> >
> > Thanks.
> >
> > - Jiaxun

2020-08-07 16:00:22

by Zhou Yanjie

[permalink] [raw]
Subject: Re: [PATCH v2] MIPS: Provide Kconfig option for default IEEE 754 conformance mode

Hello Jiaxun,

Reviewed-by: ?????? (Zhou Yanjie) <[email protected]>

?? 2020/8/1 ????2:11, Jiaxun Yang д??:
> Requested by downstream distros, a Kconfig option for default
> IEEE 754 conformance mode allows them to set their mode to
> relaxed by default.
>
> Signed-off-by: Jiaxun Yang <[email protected]>
> Reviewed-by: WANG Xuerui <[email protected]>
> Reviewed-by: Serge Semin <[email protected]>
> Reviewed-by: Huacai Chen <[email protected]>
>
> --
> v2: Reword according to Xuerui's suggestion.
> ---
> arch/mips/Kconfig | 22 ++++++++++++++++++++++
> arch/mips/kernel/cpu-probe.c | 12 +++++++++++-
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index eaf7519e3033..ac35df2b9133 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -2899,6 +2899,28 @@ config MIPS_NR_CPU_NR_MAP
> default 1024 if MIPS_NR_CPU_NR_MAP_1024
> default NR_CPUS if !MIPS_NR_CPU_NR_MAP_1024
>
> +choice
> + prompt "Default IEEE 754 conformance mode"
> + default IEEE754_DEFAULT_STRICT
> + help
> + Sets the default IEEE 754 conformance mode, same as overriding the
> + default value for the ieee754= kernel parameter. See the kernel
> + parameter for details.
> +
> + config IEEE754_DEFAULT_STRICT
> + bool "Strict"
> +
> + config IEEE754_DEFAULT_LEGACY
> + bool "Legacy"
> +
> + config IEEE754_DEFAULT_STD2008
> + bool "2008"
> +
> + config IEEE754_DEFAULT_RELAXED
> + bool "Relaxed"
> +
> +endchoice
> +
> #
> # Timer Interrupt Frequency Configuration
> #
> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
> index c231c1b67889..a5b8fe019afc 100644
> --- a/arch/mips/kernel/cpu-probe.c
> +++ b/arch/mips/kernel/cpu-probe.c
> @@ -157,7 +157,17 @@ static void cpu_set_fpu_2008(struct cpuinfo_mips *c)
> * IEEE 754 conformance mode to use. Affects the NaN encoding and the
> * ABS.fmt/NEG.fmt execution mode.
> */
> -static enum { STRICT, LEGACY, STD2008, RELAXED } ieee754 = STRICT;
> +enum ieee754_mode { STRICT, LEGACY, STD2008, RELAXED };
> +
> +#if defined(CONFIG_IEEE754_DEFAULT_STRICT)
> +static enum ieee754_mode ieee754 = STRICT;
> +#elif defined(CONFIG_IEEE754_DEFAULT_LEGACY)
> +static enum ieee754_mode ieee754 = LEGACY;
> +#elif defined(CONFIG_IEEE754_DEFAULT_STD2008)
> +static enum ieee754_mode ieee754 = STD2008;
> +#elif defined(CONFIG_IEEE754_DEFAULT_RELAXED)
> +static enum ieee754_mode ieee754 = RELAXED;
> +#endif
>
> /*
> * Set the IEEE 754 NaN encodings and the ABS.fmt/NEG.fmt execution modes