From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752009AbcF0TGj (ORCPT ); Mon, 27 Jun 2016 15:06:39 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35677 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751639AbcF0TGi (ORCPT ); Mon, 27 Jun 2016 15:06:38 -0400 Date: Mon, 27 Jun 2016 20:53:03 +0200 From: Ingo Molnar To: Dmitry Vyukov Cc: "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , "x86@kernel.org" , LKML , Alexander Potapenko , Andrey Ryabinin , kasan-dev Subject: Re: [PATCH] x86: prevent gcc from emitting SSE into boot code Message-ID: <20160627185303.GA1212@gmail.com> References: <1466617030-63776-1-git-send-email-dvyukov@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Dmitry Vyukov wrote: > On Wed, Jun 22, 2016 at 7:37 PM, Dmitry Vyukov wrote: > > Latest gcc manages to emit MOVDQA into boot code > > which leads to crashes. Add more -mno-see flags. Which GCC version is that? > > > > Signed-off-by: Dmitry Vyukov > > --- > > arch/x86/boot/compressed/Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile > > index f135688..7eaafb8 100644 > > --- a/arch/x86/boot/compressed/Makefile > > +++ b/arch/x86/boot/compressed/Makefile > > @@ -31,7 +31,7 @@ KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING > > cflags-$(CONFIG_X86_32) := -march=i386 > > cflags-$(CONFIG_X86_64) := -mcmodel=small > > KBUILD_CFLAGS += $(cflags-y) > > -KBUILD_CFLAGS += -mno-mmx -mno-sse > > +KBUILD_CFLAGS += -mno-mmx -mno-sse -mno-sse2 -mno-sse3 > > KBUILD_CFLAGS += $(call cc-option,-ffreestanding) > > KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) > > > > -- > > 2.8.0.rc3.226.g39d4020 > > > I withdraw this patch. > > From off-list discussion: > > "-mno-sse alone should disable all SSE/AVX instructions. If not, > please file a GCC bug report". So the GCC documentation says: -mmmx -mno-mmx -msse -mno-sse -msse2 -mno-sse2 -msse3 -mno-sse3 -m3dnow -mno-3dnow These switches enable or disable the use of built-in functions that allow direct access to the MMX, SSE, SSE2, SSE3 and 3Dnow extensions of the instruction set. Technically -mno-mmx won't turn off SSE instructions because they are independent. Do we really want to rely on an undocumented property of -mno-sse (clearly broken in at least one released GCC version), especially as the fix is so easy? Thanks, Ingo