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 ...) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html