Jiang, Yunhong wrote:
> This patch caused one problem.
>
> If the guest change the DS/SS etc between it set cr0.PE and the jump
> instruction.
> Considering following code:
> mov eax, cr0
> or eax, 0x11
> mov cr0, eax ---> here enable PE, and old_ctx.ds is cleard
Isn't this where the vmxassist starts emulating?
> mov ax, 0x0020
> mov ds, ax -> changes the DS here
So we only need to emulate the above change.
> jmp pword ptr [edi + 0x60]
> mov ax, word ptr [bx + 0x00a8]
>
> The vmxassit clear the oldctx.ds_sel when guest enable PE, and when guest
> executed the mov ds, ax, the content on oldctx is not updated. Later when the
> last instruction, the ds is infact 0x0, not the 0x20 as guest hoped.
>
> This issue is in fact not caused entirely by this change, since we should
> emulate all instructions between the set cr0.PE and the jump instruction. But
> because the "mov ds, ax" is in fact executed by guest, not by vmxassist, it
> do cause problem for us.
Are you sure about that? I thought vmxassist stated full software
emulation as soon as PE was set.
-- Steve
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|