Sheng Yang wrote:
> On Saturday 24 November 2007 07:23:20 Neo Jia wrote:
>   
>> hi,
>>
>> I happened to get a "emulation fail" when running the following command:
>>
>> System environment: Intel Core 2 Duo (E6600) x86_64 Fedora 8
>> (2.6.23.1-49.fc8).
>>
>> qemu-img create -f qcow debian-testing.img 10G
>>
>> sudo qemu-system-x86_64 -cdrom
>> /home/cjia/download/debian-testing-i386-netinst.iso -hda
>> debian-testing.img -boot d -m 1024
>>
>> Everything works fine until it prompts me that the installation is
>> complete and need reboot.
>>
>>     
>>> sudo qemu-system-x86_64 -cdrom
>>> /home/cjia/download/debian-testing-i386-netinst.iso -hda
>>> debian-testing.img -boot d -m 1024
>>>       
>> exception 13 (0)
>> rax 0000000000000100 rbx 0000000000000100 rcx 000000000000ffff rdx
>> 0000000000000600
>> rsi 0000000000000000 rdi 0000000000000000 rsp 0000000000000000 rbp
>> 0000000000000000
>> r8  0000000000000000 r9  0000000000000000 r10 0000000000000000 r11
>> 0000000000000000
>> r12 0000000000000000 r13 0000000000000000 r14 0000000000000000 r15
>> 0000000000000000
>> rip 0000000000010000 rflags 00033003
>> cs f000 (000f0000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> ds 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> es 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> ss 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> fs 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> gs 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0)
>> tr 0080 (40c00000/00002088 p 1 dpl 0 db 0 s 0 type b l 0 g 0 avl 0)
>> ldt 0000 (00000000/0000ffff p 1 dpl 0 db 0 s 0 type 2 l 0 g 0 avl 0)
>> gdt 0/ffff
>> idt 0/ffff
>> cr0 60000010 cr2 0 cr3 0 cr4 0 cr8 0 efer 0
>> code: 00 00 00 00 ea 5b e0 00 f0 31 30 2f 32 38 2f 30 37 00 fc f5 -->
>> fc 0f 01 15 92 a0 31 00 b8 18 00 00 00 8e d8 8e c0 8e e0 8e e8 31 c0
>> bf 00 30 39 00 b9 7c
>> Aborted
>>
>> ---> dmesg:
>>
>> kvm: emulating exchange as write
>> emulation failed but !mmio_needed? rip 10000 fc 0f 01 15    // I
>> searched through the source code but not find a place to generate "but
>> !mmio_needed?" string ...
>>     
>
>   

That's been removed some time ago (and replaced by another string). See 
054b1369679fb97582fc77f25a700d4290ff3e89.


> It due to one instruction haven't been emulated: 0xfc(one byte instruction). 
> Look it up in SDM Vol.2B's opcode map, you can find that's "CLD". And look at 
> what is CLD in SDM Vol.2, you will find "CLD - Clear direction flag". So we 
> miss this in x86_emulate.c.
>
>   
>> The version of kvm I used for kvm module is
>> "694401697ccd822bb08019731c3ee1bb34323d8e" and the kvm-userspace is
>> "a57b838b49bc4e4e7439b18d0323385d53e41c7f".
>> // Not sure if this is the right way to show the version I am using.
>> If not, please correct me, this is the first time I am using git...
>>     
>
> Yeah, that's the right ones. :)
>
>   
>> Anyway, I really want to get some comments about how to trace this
>> problem and would be very glad to dig into it!
>>     
>
> Here is the chance! Add this instruction to our x86 emulator. You can take 
> the 
> implement of "sti" and "cli" as a reference.

While adding the instrucion is helpful, something else has gone wrong 
here.  cs:ip == f000:10000.  You can see the far jump at f000:fff0 
(opcode ea) -- kvm just skipped over it somehow.

Ah, it's been fixed already: see 
c408e4e8d9045d53c1d82c622a5756febd051ef9.  I need to backport it to 2.6.23.

-- 
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to