Ulrich Weigand wrote:

> I've been looking at your latest (tarfile) version, and IMO we should
> try to get this into CVS as soon as possible.  Having a CVS that lags
> behind current development (in significant ways) is not very useful ;-)

Agreed.  Though I might suggest starting with the next version
which will have extra framework.  There are many changes.


> I've cleaned up your version a bit (removing now obsolete cruft like
> the RET_BECAUSE_ handling), but I'd prefer to have the new version
> support at least the same major functionality as the current CVS
> before replacing it.  The only thing missing in that respect is the
> hardware interrupt handling, AFAICS (and the debugger features to
> intercept/reflect interrupts).
> 
> Did you implement interrupt handling in the meantime?  Otherwise, I'd
> add this and put the new version into CVS ..

Your are right, I temporarily don't support that.  Mostly
because I was focusing on only the cooperative guest.
That tarball was mostly a proof of concept.  I will
add this back in soon.  Debugger features are not quite so
important and sometimes get in the way of architecting
plex86 until code stabilizes.


> B.t.w. I noticed one point the seems a little odd:  when performing
> SBE, you keep the original PTE stored in a global variable and restore
> it on return to the monitor.  IMO this isn't necessary: as soon as
> you have placed a TLB entry pointing to the virtualized page into the
> I TLB, you can immediately replace the original PTE, only with the U/S
> bit toggled off.  That way, guest access to the page would still trap,
> and the monitor is able to access the (original) page without needing
> to restore anything.  The advantage is that you don't need a global
> variable to store anything, which simplifies the use of more than one
> virtualized page at the same time.

This is a good observation.  I'm going to change this PTE handling,
so I didn't spend any time optimizing it.


> I've attached a correspondingly modified version of sbe(), which appears
> to be working fine.  Let me know if I've overlooked anything ...
> 
> (Another minor point: when using %dl explicitly in a gcc inline assembly
> statement, it is not enough to mark edx as clobbered, you need to use
> an *early clobber* modifier, otherwise gcc feels free to use edx for an
> input parameter :-/   This I found out the hard way ;-) )

OK, I'll look at this soon and carry it over to my internal code
for the next release.

I'll try to make a new release sooner than later, so we can
sync() the CVS tree.

Thanks,
-Kevin

Reply via email to