On Tue, Dec 19, 2000 at 09:48:12AM -0800, Colin Davidson wrote:
> James wrote:
> > Guest executes some specific bad opcode, which causes a fault.
> why not just define an I/O address that means "Address of
> driver X's buffer" then write the address to that location. 
Sounds good to me.  Thanks for hitting me over the head with the clue stick.

> Hmm, this would take a 32-bit I/O. Does x86 support that? 
Yep, inl/outl.  Sounds like a good idea to me.

> Or a status location is shared and filled after the I/O request has been
> processed?
That isn't reentrant.  It shouldn't come up much, but doing it right the
first time is generaly a Good Thing, so long as it doesn't complicate things
too much.

> Well, I don't know about other OSes, but this doesn't fit well with the
> windows NDIS architecture. Windows has an "ISR" (actually a procedure call
> from the actual ISR, which is pure windows code), which is supposed to do
> almost nothing, and which triggers a Delayed Procedure Call, which is called
> from a high priority thread and is supposed to do the bulk of the work
> (including data transfers). How about the host emulating a hardware
> interrupt, then the Guest driver signals the completion of buffer processing
> with another IO (at which point the buffer is guaranteed releasable by the
> Guest driver)?
Hm, that was exactly what I was worrying about.  Doing another IO sounds
good to me -- I think we should assign a generic BH:BL for "I'm done with
the buffer, unmap it".  ('p':'u' sounds good to me -- 'p' for plex86, of
course.  'g' for general would better be 'g' for graphics.)

        -=- James Mastros
-- 
midendian: She never sleeps.
mousetrout: But I do.  I just regret it after I wake up.
AIM: theorbtwo homepage: http://www.rtweb.net/theorb/
ICBM: 40:04:15.100 N, 76:18:53.165 W

Reply via email to