On Mon, Jun 27, 2016 at 8:53 PM, Ingo Molnar <mi...@kernel.org> wrote: > > * Dmitry Vyukov <dvyu...@google.com> wrote: > >> On Wed, Jun 22, 2016 at 7:37 PM, Dmitry Vyukov <dvyu...@google.com> 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 <dvyu...@google.com> >> > --- >> > 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
Unfortunately part of this discussion gone private. Bringing it public. This was not necessary a release version of gcc. ===== The full story is that I spent quite some time debugging it with some non-release gcc5 version a while ago, and then I was just sitting on this patch. Now I am using release gcc6. I've just checked and the kernel boots without these new flags. I thought that -mno-see does not have to prevent newer SSE instructions, so this patch will save somebody debugging in future. If the existing -mno-see should prevent all SSE instructions, then I guess we don't need this patch. And if not, then, no, I don't have a test case right now. =====