[PATCH] kexec: force x86_64 arches to boot kdump kernels on boot cpu
andi at firstfloor.org
Tue Nov 27 05:55:03 EST 2007
On Mon, Nov 26, 2007 at 08:47:40PM -0500, Neil Horman wrote:
> 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
That would be hard to believe. Linux cannot shut down CPUs
completely (put them back to SINIT state) because there is no generic
interface for this and it might be impossible. They just get put
into a HLT loop.
And even if they were in SINIT they would still need the HT connections
otherwise it would be impossible to ever wake them up.
The way HT setup is normally done is that the BIOS sets it all up
and then it never changes (except for some error conditions that
may cause SYNC flood)
> 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.
While that may help I doubt your analysis of the source of the problem
is correct. Most likely something is broken with the IO-APIC, but not
related to HyperTransport.
It would be better to properly root cause before applying.
More information about the kexec