[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Bug 1758819] Re: HVF Illegal instruction: 4, High Sier
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [Bug 1758819] Re: HVF Illegal instruction: 4, High Sierra, v2.12-rc0 |
Date: |
Wed, 7 Nov 2018 17:50:11 +0000 |
On 7 November 2018 at 17:15, Nathan Wallace <address@hidden> wrote:
> I am also able to reproduce this bug. The problem is that when hvf is
> enabled, qemu will attempt to execute the xgetbv instruction, which
> isn't supported on my processor (Intel Xeon X5670).
>
> Here is a stack trace from lldb; the behavior is 100% reproducible for
> me.
>
> address@hidden:~/src/qemu/qemu-3.0.0/x86_64-softmmu
> $ lldb -- qemu-system-x86_64 --accel hvf
> (lldb) target create "qemu-system-x86_64"
> runCurrent executable set to 'qemu-system-x86_64' (x86_64).
> (lldb) settings set -- target.run-args "--accel" "hvf"
> (lldb) run
> Process 27479 launched:
> '/Users/nathan/src/qemu/qemu-3.0.0/x86_64-softmmu/qemu-system-x86_64' (x86_64)
> Process 27479 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason =
> EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
> frame #0: 0x00000001001bca3a qemu-system-x86_64`xgetbv(xcr=0) at
> x86_cpuid.c:34
> 31 {
> 32 uint32_t eax, edx;
> 33
> -> 34 __asm__ volatile ("xgetbv"
> 35 : "=a" (eax), "=d" (edx)
> 36 : "c" (xcr));
> 37
> Target 0: (qemu-system-x86_64) stopped.
Sergio -- looks like this is the result of your code
in hvf-utils/x86_cpuid.c, which assumes xgetbv is
present on the host CPU.
It looks like tcg/i386/tcg-target.inc.c has some code
which uses xgetbv but has some better guards on
it to avoid the undef -- looks like there's a bit
you need to check in another cpuid field...
thanks
-- PMM