ftp://ftp.plex86.org/pub/plex86/plex86-diffs.2000_0625a

OK, some mods to plex86 to make the monitor interruptible.
When the guest is executing, the VM was always interruptible,
but there can be some extensive processing in the monitor
during emulation of instructions and prescanning etc.  Now
even that processing is interruptible, so we can pass hardware
interrupts back to the host very quickly.

I ran all three guests many times with no random crashes
or panics.  Last night I ran all 3 at one time and left
them running all night with no crashs.  Still spinning
away in the morning.

The only thing wrong I see is, when I killed the VMs, the user
code reports:

  Unmapping guest physical memory
  Tearing down VM
  ioctl
  : Device or resource busy

and the kernel logs:

  kernel: plex86: guest memory is still mapped!

I'm not sure what's doing that.

-Kevin
=====================================================

>From the ChangeLog:

  - "Kevin P. Lawton" <[EMAIL PROTECTED]>:
    Incoporated fix from Ulrich for broken logic in fetchdecode.c.
    Added support for monitor interruptibility.  Interrupts
      disabled dwell time is really short.  This version should
      be a lot nicer to your host OS.
    Fixed bug in sbe(); for guest CR0.PG==1, getting address of
      monitor page table was wrong.
    Fixed bug in get_cpu_capability(); added ecx and edx to list
      of registers 'touched' by cpuid instruction for eax==1 case.
    Split vm->state into vm->mon_state and vm->mon_request, to
      keep things sane for an interruptible monitor.  Because even
      a HW interrupt needs to call sbe() after it's done, even the
      end of the HW interrupt handler has to be interruptible
      (the sbe() function can be long).  Thus, HW int redirection
      does not step on the vm->mon_state.
    I added some extra push/pops to the transition code.  Not sure
      if all of it was needed.  Will look into eliminating code
      not needed.  But, I wanted to quickly get a release out
      that had the above fixes in int.
    Please try all 3 guests: cooperative, preemptible, paging on
      your machine and report.

Reply via email to