]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: selftests: x86: Avoid using SSE/AVX instructions
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 20 Sep 2024 15:44:22 +0000 (17:44 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Sun, 20 Oct 2024 16:10:27 +0000 (12:10 -0400)
Some distros switched gcc to '-march=x86-64-v3' by default and while it's
hard to find a CPU which doesn't support it today, many KVM selftests fail
with

  ==== Test Assertion Failure ====
    lib/x86_64/processor.c:570: Unhandled exception in guest
    pid=72747 tid=72747 errno=4 - Interrupted system call
    Unhandled exception '0x6' at guest RIP '0x4104f7'

The failure is easy to reproduce elsewhere with

   $ make clean && CFLAGS='-march=x86-64-v3' make -j && ./x86_64/kvm_pv_test

The root cause of the problem seems to be that with '-march=x86-64-v3' GCC
uses AVX* instructions (VMOVQ in the example above) and without prior
XSETBV() in the guest this results in #UD. It is certainly possible to add
it there, e.g. the following saves the day as well:

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-ID: <20240920154422.2890096-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/Makefile

index 960cf6a7719858586d2483c9a64839096ccd8015..e6b7e01d57080b304b21120f0d47bda260ba6c43 100644 (file)
@@ -244,6 +244,7 @@ CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
        -fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \
        -I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \
        -I$(<D) -Iinclude/$(ARCH_DIR) -I ../rseq -I.. $(EXTRA_CFLAGS) \
+       -march=x86-64-v2 \
        $(KHDR_INCLUDES)
 ifeq ($(ARCH),s390)
        CFLAGS += -march=z10