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? 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. milton