From: Sergey Dyasli Date: Mon, 5 Nov 2018 15:16:19 +0000 (+0100) Subject: x86/boot: enable NMIs after traps init X-Git-Tag: RELEASE-4.8.5~15 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=49f74ea609a61004c638e6ffc527bff769ce98ef;p=xen.git x86/boot: enable NMIs after traps init In certain scenarios, NMIs might be disabled during Xen boot process. Such situation will cause alternative_instructions() to: panic("Timed out waiting for alternatives self-NMI to hit\n"); This bug was originally seen when using Tboot to boot Xen 4.11 To prevent this from happening, enable NMIs during cpu_init() and during __start_xen() for BSP. Signed-off-by: Sergey Dyasli Reviewed-by: Andrew Cooper master commit: 072e054359a4d4a4f6c3fa09585667472c4f0f1d master date: 2018-10-23 12:33:54 +0100 --- diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 81487cb2e6..3fbb7d8ec3 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -748,6 +748,9 @@ void cpu_init(void) #define CD(register) asm volatile ( "mov %0,%%db" #register : : "r"(0UL) ); CD(0); CD(1); CD(2); CD(3); /* no db4 and db5 */; CD(6); CD(7); #undef CD + + /* Enable NMIs. Our loader (e.g. Tboot) may have left them disabled. */ + enable_nmis(); } void cpu_uninit(unsigned int cpu) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 1050127c25..550435cf33 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -683,6 +683,9 @@ void __init noreturn __start_xen(unsigned long mbi_p) /* Full exception support from here on in. */ + /* Enable NMIs. Our loader (e.g. Tboot) may have left them disabled. */ + enable_nmis(); + loader = (mbi->flags & MBI_LOADERNAME) ? (char *)__va(mbi->boot_loader_name) : "unknown";