[PATCH] kdump/i386: apic verification failure fix
o Removes the unnecessary call to local_irq_disable(). o Kdump was failing while second kernel was coming up. Check for presence of boot cpu apic id was failing in (apic_id_registered), hence hitting BUG(). o This should not have failed because before calling setup_local_APIC(), it is ensured that even if BIOS has not reported boot cpu, then hard set the prence of it. Problem happens because of usage of hard_smp_processor_id() which is hardcoded to zero in case of non SMP kernel. In kdump case second kernel can boot on a cpu whose boot cpu id is not zero. o Using boot_cpu_physical_apicid instead to hard set the presence of boot cpu. Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
bda98685b8
commit
009b29d90f
1 changed files with 1 additions and 2 deletions
|
@ -1055,7 +1055,6 @@ void __init setup_boot_APIC_clock(void)
|
||||||
using_apic_timer = 1;
|
using_apic_timer = 1;
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
local_irq_disable();
|
|
||||||
|
|
||||||
calibration_result = calibrate_APIC_clock();
|
calibration_result = calibrate_APIC_clock();
|
||||||
/*
|
/*
|
||||||
|
@ -1299,7 +1298,7 @@ int __init APIC_init(void)
|
||||||
if (!check_phys_apicid_present(boot_cpu_physical_apicid)) {
|
if (!check_phys_apicid_present(boot_cpu_physical_apicid)) {
|
||||||
printk("weird, boot CPU (#%d) not listed by the BIOS.\n",
|
printk("weird, boot CPU (#%d) not listed by the BIOS.\n",
|
||||||
boot_cpu_physical_apicid);
|
boot_cpu_physical_apicid);
|
||||||
physid_set(hard_smp_processor_id(), phys_cpu_present_map);
|
physid_set(boot_cpu_physical_apicid, phys_cpu_present_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue