Hi Drew,

I'm not sure what you're suggesting here (partly because the diagram is
still unreadable over here). Are you saying that we should write code to
emulate the behaviour of the I/O system? It could be done, but it would be
s-l-o-w. I find the thought of "forwarding signals" mildly disturbing - why
not call the ultimate handler directly?

On the PC, most everything in I/O land (pace video) is basically IO mapped,
at least initially (even DMA is triggered by IO mapped reads and writes).
Why not handle things with a data-driven approach which maps IO addresses to
handlers.

Now, when it comes to I/O, to boot on a typical OS, we need VGA, keyboard
and, often mouse. In ISA land we probably want SoundBlaster. Other than
that, we can probably get away with emulating everything as PCI-based (no
reason a guest can't see a "virtual" device on its virtual PCI bus, which
the host handles through ISA hardware, if necessary).

Any solution will need to be stateful, at least for PCI accesses (the data
returned to a query of the PCI configuration register depends on the value
written to the other PCI register, which selects an address in PCI
configuration space).

I am currently dropping in random thoughts, rather than presenting a
coherent suggestion, (probalby because I don't have one :-), but I do
strongly feel that the most efficient solution will be data-driven rather
than procedural.

Hope this helps, Colin


Reply via email to