Re: [PATCH AUTOSEL 6.1 04/13] rust: arch/um: Disable FP/SIMD instruction to match x86

From: SeongJae Park
Date: Mon Apr 24 2023 - 20:01:30 EST


Hello Sasha and Greg,


On Tue, 14 Mar 2023 08:43:16 -0400 Sasha Levin <sashal@xxxxxxxxxx> wrote:

> From: David Gow <davidgow@xxxxxxxxxx>
>
> [ Upstream commit 8849818679478933dd1d9718741f4daa3f4e8b86 ]
>
> The kernel disables all SSE and similar FP/SIMD instructions on
> x86-based architectures (partly because we shouldn't be using floats in
> the kernel, and partly to avoid the need for stack alignment, see:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383 )
>
> UML does not do the same thing, which isn't in itself a problem, but
> does add to the list of differences between UML and "normal" x86 builds.
>
> In addition, there was a crash bug with LLVM < 15 / rustc < 1.65 when
> building with SSE, so disabling it fixes rust builds with earlier
> compiler versions, see:
> https://github.com/Rust-for-Linux/linux/pull/881
>
> Signed-off-by: David Gow <davidgow@xxxxxxxxxx>
> Reviewed-by: Sergio González Collado <sergio.collado@xxxxxxxxx>
> Signed-off-by: Richard Weinberger <richard@xxxxxx>
> Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

There is a followup fix of this patch that merged into the mainline by commit
a3046a618a28 ("um: Only disable SSE on clang to work around old GCC bugs"), but
it has not added to 6.1.y so far. Without it, compiling on some setup using an
old version of gcc fails, as the followup is also mentioning. I also confirmed
the issue can be reproduced on latest 6.1.y.

Could you please add the followup fix to 6.1.y? I confirmed the commit can be
cleanly cherry-picked on latest 6.1.y, and fixes the issue as expected.


Thanks,
SJ

> ---
> arch/x86/Makefile.um | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um
> index b3c1ae084180d..d2e95d1d4db77 100644
> --- a/arch/x86/Makefile.um
> +++ b/arch/x86/Makefile.um
> @@ -1,6 +1,12 @@
> # SPDX-License-Identifier: GPL-2.0
> core-y += arch/x86/crypto/
>
> +#
> +# Disable SSE and other FP/SIMD instructions to match normal x86
> +#
> +KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
> +KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
> +
> ifeq ($(CONFIG_X86_32),y)
> START := 0x8048000
>
> --
> 2.39.2
>
>