[PATCH] kexec: fix hang on i386 when panic occurs while console_sem is held

Neil Horman nhorman at tuxdriver.com
Mon Oct 20 09:42:11 EDT 2008


On Mon, Oct 20, 2008 at 02:13:39PM +0200, Ingo Molnar wrote:
> 
> * Neil Horman <nhorman at tuxdriver.com> wrote:
> 
> > Hey all-
> > 	Theres a corner case in 32 bit x86 kdump at the moment.  When 
> > the box panics via nmi, we call bust_spinlocks(1) to disable 
> > sensitivity to the console_sem (allowing us to print to the console in 
> > all cases), but we don't call crash_kexec, until after we call 
> > bust_spinlocks(0), which re-enables console_sem sensitivity.  The 
> > result is that, if we get an nmi while the console_sem is held and 
> > kdump is configured, and we try to print something to the console 
> > during kdump shutdown (which we often do) we deadlock the box.  The 
> > fix is to simply do what 64 bit die_nmi does which is to not call 
> > bust_spinlocks(0) until after we call crash_kexec.  Patch below tested 
> > successfully by me:
> 
> applied to tip/x86/urgent, thanks Neil!
> 
Thanks, Ingo!

> >  dumpstack_32.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> would be nice to unify this code some more - to create a new 
> arch/x86/kernel/dumpstack.c and fill it in with die_nmi() as a 
> beginning?
> 
Agreed, I'll try look into that as soon as I have some free time.

Regards
Neil

> 	Ingo
> 

-- 
/****************************************************
 * Neil Horman <nhorman at tuxdriver.com>
 * Software Engineer, Red Hat
 ****************************************************/



More information about the kexec mailing list