On Wed, Dec 23, 2015 at 06:40:12AM +0000, Gonglei (Arei) wrote:
From: Kevin O'Connor [mailto:email@example.com] On Tue, Dec 22, 2015 at 02:14:12AM +0000, Gonglei (Arei) wrote:
Sorry, it doesn't work. What's worse is we cannot stop SeaBIOS stuck by Setting "CONFIG_ENTRY_EXTRASTACK=n" after applying this patch.
Oops, can you try with the patch below instead?
It works now. Thanks!
But do we need to check other possible situations that maybe cause *extra stack* broken or overridden?
I believe the issue is that an NMI could occur while SeaBIOS is already using its extra stack. The code is not prepared to switch into the extra stack while already on the extra stack. SeaBIOS is careful to always disable IRQs while running C code to prevent this issue, but disabling normal IRQs does not disable NMIs. So, I believe this issue is specific to the nature of NMIs.