----- Original Message -----
From: Ramon van Handel <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, November 04, 1999 5:49 AM
Subject: Re: some x86 instructions


> >> Good system.  I'd like to expand this to other events (physical memory,
> >> interrupts).
> >
> >Interesting.  Could you elaborate a little.  If I can get an idea
> >where you want to go with this, maybe can make some better choices
> >regarding initial implementation.  Wouldn't want to rewrite all
> >20 lines of callback redirect code.  :^)
>
> Well, I mean this:
>
> - I/O-based drivers allocate I/O ports
> - Memory-based drivers (i.e., VGA card) allocate physical memory
>   I guess you could even make physical memory itself a driver, dynamically
>   allocating host memory at need (just a wild idea).
> - A real x86 has an INTR pin.  In stead of simulating this, it would be
easier
>   just to be able to generate an interrupt by ioctl()ing the driver,
that's
>   logical.
>   However, there may be drivers that want to *catch* generated interrupts
>   (software or hardware).  This is especially useful for simulating an
ICE,
>   for me that would be one of the most useful aspects of such a system
(vICE).
>   Another idea would be that you could potentially speed up emulation of
an OS
>   by implementing parts of it outside the VM; an idea would be having WINE
>   collaborate with the VM (solves the VxD problem ?)  You could do this
>   by giving drivers the ability to "hook" interrupts.
>
> In general, I think every resource that might trigger some driver action
should
> be hookable.  However, if such a resource is not hooked you should notice
no
> performance decrease from if hooking were not implemented in the first
place.
> (for instance, memory-based hooking may be done at page level; I/O hooking
> has fine-grained control through I/O permission bitmaps; interrupts are
> also simple
> to implement).
>
> Right now, I can think of these kinds of devices:
>
> - I/O based.  Traditional.
> - DMA based.  Need a DMA driver, and some way to access memory
>   (but not hook it).
> - Memory based I/O.  VGA cards, APIC, etc.  Need memory hooking.
> - Bus snooping.  Intel Paragon NIC, etc.  Memory hooking would be okay I
guess.
>   However, it doesn't sound very *efficient*.
>
> Have I missed any ?
>
> I think memory hooking should have an "urgent" flag.
>
> - "urgent" memory hooks get invoked as soon as there's a write (or perhaps
>   also read) to/from the memory
> - non-"urgent" hooks check the memory every X amount of time to see
whether
>   it's dirty, and if so invoke the driver.
>
> Tell me what you think.
>
> >Damn, almost 4am again.  I must virtualize myself and run a
> >few copies.
> >
> >  #define MAX_KEVINS 256
> >  class kevin;
> >
> >  vkevin = new kevin[MAX_KEVINS];
> >
> >  for (unsigned i=0; i<MAX_KEVINS]; i++) {
> >    vkevin[i].hack();
> >    }
> >
> >much better...
>
> You know it when you're talking to *real* geeks ;)
>
> -- Ramon
>
>
>
>
>
Hehehe Kevin didn't "free" his copies! ;-)


Reply via email to