diff mbox series

[kvm-unit-tests] x86: disable SSE on 32-bit hosts

Message ID 20200616140217.104362-1-pbonzini@redhat.com (mailing list archive)
State New, archived
Headers show
Series [kvm-unit-tests] x86: disable SSE on 32-bit hosts | expand

Commit Message

Paolo Bonzini June 16, 2020, 2:02 p.m. UTC
On 64-bit hosts we are disabling SSE and SSE2.  Depending on the
compiler however it may use movq instructions for 64-bit transfers
even when targeting 32-bit processors; when CR4.OSFXSR is not set,
this results in an undefined opcode exception, so tell the compiler
to avoid those instructions on 32-bit hosts as well.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 x86/Makefile.i386 | 1 +
 1 file changed, 1 insertion(+)

Comments

Thomas Huth June 16, 2020, 3:17 p.m. UTC | #1
On 16/06/2020 16.02, Paolo Bonzini wrote:
> On 64-bit hosts we are disabling SSE and SSE2.  Depending on the
> compiler however it may use movq instructions for 64-bit transfers
> even when targeting 32-bit processors; when CR4.OSFXSR is not set,
> this results in an undefined opcode exception, so tell the compiler
> to avoid those instructions on 32-bit hosts as well.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  x86/Makefile.i386 | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/x86/Makefile.i386 b/x86/Makefile.i386
> index d801b80..be9d6bc 100644
> --- a/x86/Makefile.i386
> +++ b/x86/Makefile.i386
> @@ -1,6 +1,7 @@
>  cstart.o = $(TEST_DIR)/cstart.o
>  bits = 32
>  ldarch = elf32-i386
> +COMMON_CFLAGS += -mno-sse -mno-sse2

That's likely a good idea, but it still does not fix the problem in the
gitlab-ci:

 https://gitlab.com/huth/kvm-unit-tests/-/jobs/597747782#L1934

?

 Thomas
Paolo Bonzini June 23, 2020, 9:45 a.m. UTC | #2
On 16/06/20 17:17, Thomas Huth wrote:
> On 16/06/2020 16.02, Paolo Bonzini wrote:
>> On 64-bit hosts we are disabling SSE and SSE2.  Depending on the
>> compiler however it may use movq instructions for 64-bit transfers
>> even when targeting 32-bit processors; when CR4.OSFXSR is not set,
>> this results in an undefined opcode exception, so tell the compiler
>> to avoid those instructions on 32-bit hosts as well.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  x86/Makefile.i386 | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/x86/Makefile.i386 b/x86/Makefile.i386
>> index d801b80..be9d6bc 100644
>> --- a/x86/Makefile.i386
>> +++ b/x86/Makefile.i386
>> @@ -1,6 +1,7 @@
>>  cstart.o = $(TEST_DIR)/cstart.o
>>  bits = 32
>>  ldarch = elf32-i386
>> +COMMON_CFLAGS += -mno-sse -mno-sse2
> 
> That's likely a good idea, but it still does not fix the problem in the
> gitlab-ci:
> 
>  https://gitlab.com/huth/kvm-unit-tests/-/jobs/597747782#L1934

Hmm, it does fix everything here.  How does one go debugging what's
happening in the CI?

Paolo
diff mbox series

Patch

diff --git a/x86/Makefile.i386 b/x86/Makefile.i386
index d801b80..be9d6bc 100644
--- a/x86/Makefile.i386
+++ b/x86/Makefile.i386
@@ -1,6 +1,7 @@ 
 cstart.o = $(TEST_DIR)/cstart.o
 bits = 32
 ldarch = elf32-i386
+COMMON_CFLAGS += -mno-sse -mno-sse2
 
 cflatobjs += lib/x86/setjmp32.o