[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Future x86 emulator direction



On 12/13/2016 07:10 PM, Andrew Cooper wrote:
> On 13/12/16 15:58, Razvan Cojocaru wrote:
>> Hello, and first of all thanks for the discussion!
>>
>>> Think of it a bit more like introducing a new action emulator (name
>>> definitely subject to improvement), which implements things such as
>>> wrmsr, cpuid, pagewalk, task_switch, etc.
>>>
>>> The vmexit helpers, given decode assistance from hardware, can directly
>>> call action->task_switch().  If insufficient information is available
>>> (e.g. LMSW on AMD), the helpers invoke the instruction emulator to work
>>> out what to do, and the instruction emulator would invoke the action
>>> emulator as part of its execute phase.
>>>
>>> Wherever possible, the action emulator should be guest-neutral, and
>>> ideally the single point of implementation of non-architectural actions
>>> such as "the vm_event subsystem is interested in this."
>>>
>>>> And to be honest, on the road towards
>>>> completion of the emulator I think the SVM/VMX insns are pretty
>>>> close to the end of the priority list.
>>> I'd expect them to show up frequently during introspection, although
>>> maybe I am wrong.  Razvan: Any thoughts?
>> I definitely think this is a good idea as far as introspection goes -
>> having a single contact surface with the underlying logic would be a
>> significant improvement.
>>
>> As for SVM/VMX instructions, we're interested in anything that is able
>> to trigger an EPT fault (and hence a mem_access event) - we've had our
>> share of adventures with VMX-specific instructions, so they're not low
>> priority for us.
> 
> In reality, this is any instruction if you set EPT NX on a page, I presume?
> 
> Do you have stats on which instructions you most frequently have to
> singlestep because of lack of emulator support, or is the spread
> essentially random?

We do set some pages NX, so those too, but there are also a lot of
events coming from instructions that simply try to write to a page
marked RX - so we'll have an EPT fault even for an instruction running
from a legitimate page, but which has a destination address in a
read-only page.

We've unfortunately not kept track of them beyond the discussions and
patches that occured on xen-devel, but it's been important enough to
warrant writing patches that basically set the MTF and "single-step"
intstructions that fail emulation.


Thanks,
Razvan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.