On Sun, Jul 25, 2010 at 09:34:38PM +0300, Avi Kivity wrote:
On 07/25/2010 08:19 PM, Kevin O'Connor wrote:
Only the ljmpw is in big real mode with a code address>64K - the "Disable protected mode" code is technically in 16bit protected mode. I'm not sure if that helps explain why it works.
What happens is kvm enters real mode with cs.limit=0xffff, the guest #GPs due to segment limit violation, and enters the emulator, which emulates the far jump correctly.
So this works, and will continue to work even after we fix limit checking. It's still cleaner IMO to use normal code segments.
Makes sense. I committed the patch that avoids this behavior to SeaBIOS git.
-Kevin