[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