This patch is to fix a problem of interrupts being sent to cpus that can not respond. This patch would return slave cpus to SAL slave loop, at time of crash, except cpu0. The cpu0 is a special case as there is no way to return it to SAL, so cpu0 is better handled in firmware. Signed-off-by: Jay Lan <jlan@xxxxxxx>
Index: linux/arch/ia64/kernel/crash.c =================================================================== --- linux.orig/arch/ia64/kernel/crash.c 2006-10-17 17:09:45.662734380 -0700 +++ linux/arch/ia64/kernel/crash.c 2006-10-30 12:27:12.080526026 -0800 @@ -146,14 +146,21 @@ machine_kdump_on_init(void) void kdump_cpu_freeze(struct unw_frame_info *info, void *arg) { + int cpuid = smp_processor_id(); + local_irq_disable(); crash_save_this_cpu(); current->thread.ksp = (__u64)info->sw - 16; atomic_inc(&kdump_cpu_freezed); - kdump_status[smp_processor_id()] = 1; + kdump_status[cpuid] = 1; mb(); - for (;;) - cpu_relax(); + /* return cpus (except cpu0) to SAL slave loop */ + if (cpuid == 0) { + for (;;) + cpu_relax(); + } else { + ia64_jump_to_sal(&sal_boot_rendez_state[cpuid]); + } } static int
![]() |