On Sat, Dec 19, 2015 at 12:03:15PM +0000, Gonglei (Arei) wrote:
Maybe the root cause is not NMI but INTR, so yield()
can open hardware interrupt,
And then execute interrupt handler, but the interrupt handler make the SeaBIOS
stack broken, so that the BSP can't execute the instruction and occur exception,
VM_EXIT to Kmod, which is an infinite loop. But I don't have any proofs except
the surface phenomenon.
I can't see any reason why allowing interrupts at this location would
be a problem.
Kevin, can we drop yield() in smp_setup() ?
It's possible to eliminate this instance of yield, but I think it
would just push the crash to the next time interrupts are enabled.
Is it really useful and allowable for SeaBIOS? Maybe
for other components?
I'm not sure. Because we found that when SeaBIOS is booting, if we inject a
NMI by QMP, the guest will *stuck*. And the kvm tracing log is the same with
the current problem.
If you apply the patches you had to prevent that NMI crash problem,
does it also prevent the above crash?