On 08/19/2012 06:20 PM, Kevin O'Connor wrote:
On Sun, Aug 19, 2012 at 02:39:04PM +0300, Avi Kivity wrote:
On 08/19/2012 12:27 PM, Avi Kivity wrote:
On 08/17/2012 08:53 AM, Gerd Hoffmann wrote:
This looks suspious. vcpu migration issue? Or just something missing in the trace?
Looks like tracing with a too-small buffer size. I generally trace using
trace-cmd record -e kvm -b 100000
and with fingers crossed.
The RET FAR instruction failure (which trace-cmd report decodes) is probably not the original failure.
In fact it is, we mis-emulated stack operations when SS.B=0 but the address size was 32-bits, and there are bits set in the top 16 bits of ESP.
Why ESP has bits set in the top 16 bits is another question. Is seabios polluting those bits?
During the WinXP install/boot, when it makes 16bit calls it only resets the lower bits of %esp. It expects the 16bit code to only use %sp. Quite spectacularly, WinXP requires the top bits of %esp to not be mangled by the 16bit code.
SeaBIOS is very careful to not spuriously alter calling state. This includes backing up the top bits of %esp and restoring them on return.
Okay, I'll try to track down where this came from.