[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xen-devel
Subject:    [Xen-devel] Re: [PATCH][RFC] Emulating real mode with x86_emulate
From:       Anthony Liguori <aliguori () us ! ibm ! com>
Date:       2007-03-30 22:11:39
Message-ID: 460D8B1B.6020308 () us ! ibm ! com
[Download RAW message or body]

Kamble, Nitin A wrote:
> Anthony,
> eip of 0x0 is the right address.
>
> Because the trampoline_Start code is relocated to address 0.
>
>     /* Relocate real-mode trampoline to 0x0. */
>     "    mov  $trampoline_start,%esi \n"
>     "    xor  %edi,%edi              \n"
>     "    mov  $trampoline_end,%ecx   \n"
>     "    sub  %esi,%ecx              \n"
>     "    rep  movsb                  \n"
>
> Still there is no progress in the emulation. The guest is dying with 
> triple-fault just like before.
>
> Thanks & Regards,
> Nitin
> Open Source Technology Center, Intel Corporation.
> -------------------------------------------------------------------------
> The mind is like a parachute; it works much better when it's open.
>
>
> On Fri, 2007-03-30 at 14:08 -0700, Nitin A Kamble wrote:
>> Hi Anthony,
>>
>> On Fri, 2007-03-30 at 14:00 -0500, Anthony Liguori wrote:
>>>     /* Enter real mode, reload all segment registers and IDT. */
>>>     "    ljmp $0x8,$0x0              \n"
>>>     "trampoline_start: .code16       \n"
>>>     "    mov  %eax,%cr0              \n"
>>>
>>> That change was pretty recent so unless it was reverted it should Just Work.
>>>
>>> Regards,
>>>
>>> Anthony Liguori
>>>       
>> Now I see cr0 is updated after returning from main.
>>    I enabled the debug log in the xen code now.
>>
>> (XEN) HVM2: Creating MP tables 
>> ...                                             
>> (XEN) HVM2: Loading Cirrus VGABIOS 
>> ...                                         
>> (XEN) HVM2: Loading ACPI 
>> ...                                                   
>> (XEN) HVM2: Loading VMXAssist ... 
>> deadbeef                                     
>> (XEN) HVM2: 
>> foo                                                                
>> (XEN) 
>> hvmop_emulate_realmode                                                    
>>
>> (XEN) guest requests real mode 
>> emulation                                       
>> (XEN) foo 
>> 221                                                                  
>> (XEN) HVM2: Invoking ROMBIOS 
>> ...                                               
>> (XEN) vmx_vmexit_handler called. eip = 
>> 0x0                                     
>> (XEN) vmx_cr_access called 
>> eip=0x0                                             
>> (XEN) mov_to_cr 0 called 
>> eip=0x0                                               
>> (XEN) vmx_set_cr0 called 
>> eip=0x0                                               
>> (XEN) Transfering -- control to x86_emulate eip 
>> 0x0                            
>> (XEN) hvm.c:446:d2 Triple fault on VCPU0 - invoking HVM system reset. 
>>
>> It shows cr0 is getting modified. But the eip is still 0x0.

set_cr0 is returning 1 though which should increment eip to the next 
instruction.

I'm a bit perplexed about my eip now and also why your eip is still 0.  
It should be the instruction following the mov cr0.

Regards,

Anthony Liguori

>>
>> Thanks & Regards,
>> Nitin
>> Open Source Technology Center, Intel Corporation.
>> -------------------------------------------------------------------------
>> The mind is like a parachute; it works much better when it's open.
>>
>


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic