Ulrich (and I forget who else has write CVS permission),
Could you freeze writing to the CVS tree for just a bit.
I got the relocatable host<-->monitor mechanisms working.
Made a lot of mods, so I'd better spin through the newest
CVS snapshot and try my best to integrate anything
new.
This lets us place monitor structures like the GDT, IDT,
interrupt handlers etc, _anywhere_ in the guest's memory
we want independent of the host. Similarly the guest
can be mapped in anywhere. The host and monitor have
completely separate spaces. The technique I use is
to open up a common page ("wormhole") between the two
spaces and transition over, then close it behind me.
Same on the way back.
I'll roll a new tarball, likely by tomorrow and send you
a message.
For whoever's interested, a great mini-project would be
to cruise through host-linux.c, and add support for
multiple VMs. I just have things coded to use vm[0]
now, but I believe everything in monitor.c has been
encapsulated, and is ready to handle multiple VMs.
Also after this is re-integrated, I'd like to gather some
data on the following. Run some kind of simple do-nothing
code inside and outside the VM and see what kind of performance
ratio we get. The VM should impose some amount of impact
given the extra TLB flushes, and extra overhead of transitioning
in/out of the VM each host timer tick. Anyways, it would be
nice to know what the upper bound of performance is.
-Kevin