I am using kdump functionality to generate the kernel crash core file. I created a small kernel module which creates the kernel watchdog crash
static int watchdog_crash(void *unused) { unsigned long flags;
spin_lock_irqsave(&wdt_lock, flags);
udelay(1000);
while(1);
return 0;
}
static void kernel_thread() {
struct task_struct *t1;
t1 = kthread_create_on_cpu(watchdog_crash, NULL, 0, "mythread1");
if(t1) {
printk(KERN_EMERG "MANALI: Thread 1 Created Sucessfully\n");
wake_up_process(t1);
} else {
printk(KERN_EMERG "MANALI: Thread 1 Creation Failed\n");
}
}
when I am inserting the module it is creating a watchdog exception but the problem is that it is not able to ipi(interprocessor interrupt) to the cpu where this kernel thread is blocked while generating the core file. I just want to know that does this happen because spin_lock_irqsave() disables all interrupts. Does it disable IPI interrupt too?