On Thu, 24 Mar 2011 08:20:32 -0600, Milton Miller wrote: >On Wed, 23 Mar 2011 about 18:40:12 -0000, Takao Indoh wrote: >> Hi all, >> >> I found a problem that kdump(2nd kernel) sometimes hangs up. It seems >> that system panic occurs as follows. >.. >> (2) >> A pending IPI from 1st kernel comes after unmasking interrupts at the >> following point. >> >> asmlinkage void __init start_kernel(void) >> { >> (snip) >> time_init(); >> profile_init(); >> if (!irqs_disabled()) >> printk(KERN_CRIT "start_kernel(): bug: interrupts were " >> "enabled early\n"); >> early_boot_irqs_disabled = false; >> local_irq_enable(); <=======================================HERE >> >> (3) >> Kernel tries to handle the interrupt, but some data structures are not >> initialized yet at this point. As a result, in the >> generic_smp_call_function_single_interrupt(), NULL pointer dereference >> occurs when list_replace_init() tries to access &q->list.next. >> >[tried to match lapic timer interrupt] >> Any comments? > >So this occurs because unlike device interrupts, this vector has the action >defined statically and no per-interrupt disable on your architecture? I think there is not per-interrupt disable for IPI. >If so, just initialize the data structure earlier -- change >init_call_single_data from early_initcall to an explict call after the >per-cpu areas are initialized. That makes sense. I'll do this, thanks. Thanks, Takao Indoh > >milton