• Neil Horman's avatar
    x86, kexec: force x86 arches to boot kdump kernels on boot cpu · c6b48324
    Neil Horman authored
    Recently a kdump bug was discovered in which a system would hang inside
    calibrate_delay during the booting of the kdump kernel.  This was caused
    by the fact that the jiffies counter was not being incremented during
    timer calibration.  The root cause of this problem was found to be a
    bios misconfiguration of the hypertransport bus.  On system affected by
    this hang, the bios had assigned APIC ids which used extended apic bits
    (more than the nominal 4 bit ids's), but failed to configure bit 17 of
    the hypertransport transaction config register, which indicated that the
    mask for the destination field of interrupt packets accross the ht bus
    (see section 3.3.9 of
    http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/26094.PDF).
    If a crash occurs on a cpu with an APIC id that extends beyond 4 bits,
    it will not recieve interrupts during the kdump kernel boot, and this
    hang will be the result.  The fix is to add this patch, whcih add an
    early pci quirk check, to forcibly enable this bit in the httcfg
    register.  This enables all cpus on a system to receive interrupts, and
    allows kdump kernel bootup to procede normally.
    Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    c6b48324
early-quirks.c 4.71 KB