diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S index 9ecc36e5ca..2fbe90706c 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S @@ -719,6 +719,7 @@ ENTRY(do_hypervisor_callback) # do_hyperviosr_callback(struct *pt_regs) call evtchn_do_upcall jmp error_exit +#ifdef CONFIG_X86_LOCAL_APIC ENTRY(nmi) zeroentry do_nmi_callback ENTRY(do_nmi_callback) @@ -728,6 +729,7 @@ ENTRY(do_nmi_callback) XEN_BLOCK_EVENTS(%rsi) GET_THREAD_INFO(%rcx) jmp retint_restore_args +#endif ALIGN restore_all_enable_events: diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h index bad118e44c..84186bbe96 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h @@ -44,7 +44,9 @@ static void __init machine_specific_arch_setup(void) (unsigned long) failsafe_callback, (unsigned long) system_call); +#ifdef CONFIG_X86_LOCAL_APIC HYPERVISOR_nmi_op(XENNMI_register_callback, (unsigned long)&nmi); +#endif machine_specific_modify_cpu_capabilities(&boot_cpu_data); }