[SeaBIOS] vgabios -> seabios breaks (my) 16-bit applications

Kevin O'Connor kevin at koconnor.net
Mon Jan 12 20:36:30 CET 2015


On Mon, Jan 12, 2015 at 02:00:24PM -0500, Paolo Bonzini wrote:
> > > No, KVM hides the fact that you are in protected mode.  EMM386 would be
> > > affected, but then it is not impossible for old programs to require
> > > disabling it.
> > 
> > I was under the vague impression that kvm uses VM86 mode to run 16bit
> > code on some Intel chipsets.  The SMSW instruction isn't privileged so
> > I didn't think it could be hidden.
> 
> It isn't privileged indeed (nice trick in fact!), but that doesn't matter
> for VT-x extensions.
> 
> Old processors let you run the processor in VMX non-root mode (i.e. as a VM)
> only in protected mode, so KVM uses VM86 when the processor is in real mode
> (and uses an interpreter while in big real mode or during real<->protected mode
> transitions).
> 
> But all the bells and whistles of VMX still apply, including the ability to
> fake the value of CR0 for both MOV and [LS]MSW instructions.

Okay, so it fakes real-mode by setting up a protected mode guest with
a fake CR0 that is running vm86, and so SMSW still returns a value
with PE off?  (As opposed to a regular guest that itself launches a
VM86 instance, in which case CR0 from SMSW would have PE on.)

Good to know - thanks.
-Kevin



More information about the SeaBIOS mailing list