Re: [Qemu-devel] E5-2620v2 - emulation stop error

Radim Krčmář
2015-03-26T17:34:43Z

2015-03-26 12:36-0400, Kevin O'Connor:
> On Thu, Mar 26, 2015 at 04:58:07PM +0100, Radim Krčmář wrote:
> > Notice the 0xef. My best hypothesis so far is that we fail at resetting
> > devices, and 0xef is LOCAL_TIMER_VECTOR from Linux before we rebooted.
> > (The bug happens at the first place that enables interrupts.)
>
> FYI, the "int $0x19" isn't the first place SeaBIOS will enable
> interrupts. Each screen print (every character in the seabios banner
> and uuid string) will call the vga bios (int $0x10) with irqs enabled
> (see output.c:screenc).

Most useful, thank you.
So interrupt can't be "forgotten" there on reboot ... it's possible that
a pending timer injects it later.
(I'd like to grasp the reason behind 0xef first.)

> Also, SeaBIOS loads a default vector (f000:ff53) at 0xef which does a
> simple "iretw".

The #GP error code could help a bit here.

> Things that are unusual about the "int $0x19" call:
> - it is likely the first place that the cpu is transitioned into
> 16bit real mode as opposed to "big real" mode. (That is, the
> first place interrupts are enabled with the segment limits set to
> 0xffff.)
> - it's right after the fw/shadow.c:make_bios_readonly() call, which
> attempts to configures the memory at 0xf0000-0x100000 as
> read-only. That code also issues a wbinvd() call.

(I'll wait for the trace before doing more wild guesses ...)