Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753049AbbGEUI2 (ORCPT ); Sun, 5 Jul 2015 16:08:28 -0400 Received: from mail.kernel.org ([198.145.29.136]:52697 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752368AbbGEUIV (ORCPT ); Sun, 5 Jul 2015 16:08:21 -0400 From: Andy Lutomirski To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Andy Lutomirski , Linus Torvalds , Jan Kara , Ingo Molnar , Borislav Petkov Subject: [PATCH] x86: Fix detection of GCC -mpreferred-stack-boundary support Date: Sun, 5 Jul 2015 13:08:16 -0700 Message-Id: X-Mailer: git-send-email 2.4.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2128 Lines: 60 As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383, GCC only allows -mpreferred-stack-boundary=3 on x86_64 if -mno-sse is set. That means that cc-option will not detect -mpreferred-stack-boundary=3 support, because we test for it before setting -mno-sse. Fix it by reordering the Makefile bits. Compile-tested only. This should help avoid code generation issues such as the one that was worked around in b96fecbfa8c8 ("x86/fpu: Fix boot crash in the early FPU code"). I'm a bit concerned that we could still have problems on older GCC versions given that our asm code does not respect GCC's idea of the ABI-required stack alignment. Cc: Linus Torvalds Cc: Jan Kara Cc: Ingo Molnar Cc: Borislav Petkov Signed-off-by: Andy Lutomirski --- arch/x86/Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 118e6debc483..344dd2110b2a 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -39,6 +39,12 @@ ifdef CONFIG_X86_NEED_RELOCS LDFLAGS_vmlinux := --emit-relocs endif +# prevent gcc from generating any FP code by mistake +# This must be before we try -mpreferred-stack-boundary -- see +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383 +KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow +KBUILD_CFLAGS += $(call cc-option,-mno-avx,) + ifeq ($(CONFIG_X86_32),y) BITS := 32 UTS_MACHINE := i386 @@ -167,9 +173,6 @@ KBUILD_CFLAGS += -pipe KBUILD_CFLAGS += -Wno-sign-compare # KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -# prevent gcc from generating any FP code by mistake -KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -KBUILD_CFLAGS += $(call cc-option,-mno-avx,) KBUILD_CFLAGS += $(mflags-y) KBUILD_AFLAGS += $(mflags-y) -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/