a11c33863f
5281fad4-numa-sched-leave-node-affinity-alone-if-not-in-auto-mode.patch 52820823-nested-SVM-adjust-guest-handling-of-structure-mappings.patch 52820863-VMX-don-t-crash-processing-d-debug-key.patch 5282492f-x86-eliminate-has_arch_mmios.patch 52864df2-credit-Update-other-parameters-when-setting-tslice_ms.patch 52864f30-fix-leaking-of-v-cpu_affinity_saved-on-domain-destruction.patch 5289d225-nested-VMX-don-t-ignore-mapping-errors.patch 528a0eb0-x86-consider-modules-when-cutting-off-memory.patch 528f606c-x86-hvm-reset-TSC-to-0-after-domain-resume-from-S3.patch 528f609c-x86-crash-disable-the-watchdog-NMIs-on-the-crashing-cpu.patch 52932418-x86-xsave-fix-nonlazy-state-handling.patch - Add missing requires to pciutils package for xend-tools - bnc#851749 - Xen service file does not call xend properly xend.service - bnc#851386 - VUL-0: xen: XSA-78: Insufficient TLB flushing in VT-d (iommu) code 528a0e5b-TLB-flushing-in-dma_pte_clear_one.patch - bnc#849667 - VUL-0: xen: XSA-74: Lock order reversal between page_alloc_lock and mm_rwlock CVE-2013-4553-xsa74.patch - bnc#849665 - VUL-0: CVE-2013-4551: xen: XSA-75: Host crash due to guest VMX instruction execution 52809208-nested-VMX-VMLANUCH-VMRESUME-emulation-must-check-permission-1st.patch - bnc#849668 - VUL-0: xen: XSA-76: Hypercalls exposed to privilege rings 1 and 2 of HVM guests OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=279
61 lines
2.2 KiB
Diff
61 lines
2.2 KiB
Diff
# Commit 2a16fcd5ba0244fef764886211452acc69c0ed00
|
|
# Date 2013-11-22 14:48:12 +0100
|
|
# Author David Vrabel <david.vrabel@citrix.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
x86/crash: disable the watchdog NMIs on the crashing cpu
|
|
|
|
nmi_shootdown_cpus() is called during a crash to park all the other
|
|
CPUs. This changes the NMI trap handlers which means there's no point
|
|
in having the watchdog still running.
|
|
|
|
This also disables the watchdog before executing any crash kexec image
|
|
and prevents the image from receiving unexpected NMIs.
|
|
|
|
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
|
|
|
|
PVOps Linux as a kexec image shoots itself in the foot otherwise.
|
|
|
|
On a Core2 system, Linux declares a firmware bug and tries to invert some bits
|
|
in the performance counter register. It ends up setting the number of retired
|
|
instructions to generate another NMI to fewer instructions than the NMI
|
|
interrupt path itself, and ceases to make any useful progress.
|
|
|
|
The call to disable_lapic_nmi_watchdog() must be this late into the kexec path
|
|
to be sure that this cpu is the one which will execute the kexec image.
|
|
Otherwise there are race conditions where the NMIs might be disabled on the
|
|
wrong cpu, resulting in the kexec image still receiving NMIs.
|
|
|
|
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
|
|
|
--- a/xen/arch/x86/crash.c
|
|
+++ b/xen/arch/x86/crash.c
|
|
@@ -117,6 +117,7 @@ static void nmi_shootdown_cpus(void)
|
|
unsigned long msecs;
|
|
int i, cpu = smp_processor_id();
|
|
|
|
+ disable_lapic_nmi_watchdog();
|
|
local_irq_disable();
|
|
|
|
crashing_cpu = cpu;
|
|
--- a/xen/arch/x86/nmi.c
|
|
+++ b/xen/arch/x86/nmi.c
|
|
@@ -165,7 +165,7 @@ static void nmi_timer_fn(void *unused)
|
|
set_timer(&this_cpu(nmi_timer), NOW() + MILLISECS(1000));
|
|
}
|
|
|
|
-static void disable_lapic_nmi_watchdog(void)
|
|
+void disable_lapic_nmi_watchdog(void)
|
|
{
|
|
if (nmi_active <= 0)
|
|
return;
|
|
--- a/xen/include/asm-x86/apic.h
|
|
+++ b/xen/include/asm-x86/apic.h
|
|
@@ -200,6 +200,7 @@ extern void smp_local_timer_interrupt (s
|
|
extern void setup_boot_APIC_clock (void);
|
|
extern void setup_secondary_APIC_clock (void);
|
|
extern void setup_apic_nmi_watchdog (void);
|
|
+extern void disable_lapic_nmi_watchdog(void);
|
|
extern int reserve_lapic_nmi(void);
|
|
extern void release_lapic_nmi(void);
|
|
extern void self_nmi(void);
|