On Sat, 23 Dec 2000, Drew Northup wrote:

[I've been away for two weeks]

> Depending on whose system (real or guest...) you mean  by "system RAM", you
> could either be doing something really dangerous (letting the guest write
> unhindered to real RAM addresses)

I meant guest RAM of course. So this first thing is not true.

> or just trying to do something that isn't
> going to help much since it is already built into the VM.  

And here I don't understand you.

> This is the
> problem of MMIO that we were talking about, and the reason that all mov
> instructions are currently scanned.  

Only mov instructions? I assume you mean any memory r/w instruction here.
I should inspect the plex86 source to see what you really mean here.

It's really quite easy: the guest just sees memory addresses 0-max. The
area 0xb8000-0xbffff is just one part of this memory. The monitor can do
updates from this memory area to an area on the real screen.

While strictly spoken MMIO is in place, it does not matter in most video
modes except the planar modes since in most video modes video memory
behaves like normal memory from the CPU point of view: if a written byte
at some address is read it's value will be the same as the one written.

> The idea is that by using all PM
> compatible drivers & such we can get around this & run ring3
> unscanned......, but this will only work in that situation.  

There are also quite a few programs running in PM operating systems with
direct access to the framebuffer in video memory. This would be a very
similar situation to DOS style graphics programs. I don't really see the
difference here.

Dosemu has done it this way for ages; in particular it can either map the
video memory directly (full screen console) or update to a window in
X. Support for the planar modes was only added last year and is inevitably
much slower because the cpu has to be intercepted.

(this comparison with dosemu is just because I'm more familiar with it and
I think that plex86 and dosemu can learn from each other. While dosemu
implements v86 mode+dpmi extensions whereas plex86 wants to virtualize an
x86-cpu they both implement a virtual pc. Hmm come to think of it, dosemu
can freely borrow from plex86, except the elpin vga bios, but the other
way around is not possible because of GPL vs. LGPL issues).

Bart


Reply via email to