|
|
|
|
|
|
|
|
|
|
xen-devel
RE: [Xen-devel] [PATCH] support protected mode mmio with non-zero CS bas
>> realmode = hvm_realmode(v);
>> if ( realmode )
>> - inst_addr = (regs->cs << 4) + regs->eip;
>> + inst_addr = regs->cs << 4;
>> else
>> - inst_addr = regs->eip;
>> + inst_addr = hvm_get_segment_base(current, seg_cs);
>
>Remove the "if ( realmode ) " and just use the segment base address. The
>base-address in the register should be correct even in realmod, or the
>processor is broken. [I don't think this code is being executed from
>vmxassist - if it is, then that's a different special case!].
I intentionally didn't, as at least on VMX the read operation could
be significantly slower than a shift (and due to the indirect call it will
be slower even on SVM).
>Theoretically, you should also check that (eip <= segment.limit), and
>issue GP-fault if not true.
Again intentionally no: If the original instruction managed to generate
a page fault, than it must have been entirely within limits - otherwise
hardware would have generated a GP fault.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|