[PATCH] kexec: force x86_64 arches to boot kdump kernels on boot cpu
Eric W. Biederman
ebiederm at xmission.com
Mon Nov 26 23:12:25 EST 2007
Neil Horman <nhorman at tuxdriver.com> writes:
> Hey all-
> I've been working on an issue lately involving multi socket x86_64
> systems connected via hypertransport bridges. It appears that some systems,
> disable the hypertransport connections during a kdump operation when all but the
> crashing processor gets halted in machine_crash_shutdown. This becomes a
> problem when the ioapic attempts to route interrupts to the only remaining
> processor. Even though the active processor is targeted for interrupt
> reception, the fact that the hypertransport connections are inactive result in
> interrupts not getting delivered. The effective result is that timer interrupts
> are not delivered to the running cpu, and the system hangs on reboot into the
> kdump kernel during calibrate_delay. I've found that I've been able to avoid
> this hang, by forcing a transition to the bios defined boot cpu during the
> crashing kernel shutdown. This patch accomplished that. Tested by myself and
> the origional reporter with successful results.
If you can get to calibrate_delay hypertransport is still routing traffic.
Your diagnosis of the problem is wrong. Most likely it is just an ioapic
programming error in restoring the system to PIC mode.
I agree that there is a problem.
The reliable fix is to totally skip the PIC interrupt mode and go directly
to apic mode.
To make the code kexec on panic code path reliable we need to remove code
not add it.
Frankly I think switching cpus is one of the least reliable things that
we can do in general.
More information about the kexec