[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel] [PATCH] support protected mode mmio with non-zero CS base
>> 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |