On Saturday 29 July 2006 04:57, Zachary Amsden wrote: > Rusty Russell wrote: > > My ideal is to be able to write a hypervisor without having to handle > > any traps, and by simply filling in paravirt_ops on the Linux side. > > Don't know if this is achievable, but we'll see... > > > That's a good goal, and is almost achievable. You don't need > instruction simulation traps with a full set of sensitive / privileged > paravirt ops. You still need to do some special things for page faults, > but at least you shouldn't need to decode the instruction stream - which > is a giant pain on x86. This is why I wanted to make debug registers > and rdpmc part of the VMI interface, even though they are not > performance critical (or even used in Linux, in the case of performance > counters). Actually, you may need the decoding anyway, for #GP's from > userspace, because segmentation concerns with the TLS library - unless > you use a no-seg-neg TLS glibc (and don't have any statically linked TLS > binaries). Isn't it needed always for any kind of port- or MM-IO? Replacing all these accesses with para virtualized drivers may be too much. I would prefer to not add hooks for everything in Linux, but just emulate the non performance critical and simple stuff that can be trapped. See the x86 instruction decoding as a weird, but very well specified, way to encode a hypercall. -Andi