diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 833f22e5ba..c8639d35f3 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -941,6 +941,9 @@ void __init __start_xen(unsigned long mbi_p) set_in_cr4(X86_CR4_OSFXSR); if ( cpu_has_xmm ) set_in_cr4(X86_CR4_OSXMMEXCPT); + + local_irq_enable(); + #ifdef CONFIG_X86_64 vesa_mtrr_init(); #endif @@ -950,6 +953,8 @@ void __init __start_xen(unsigned long mbi_p) smp_prepare_cpus(max_cpus); + spin_debug_enable(); + /* * Initialise higher-level timer functions. We do this fairly late * (post-SMP) because the time bases and scale factors need to be updated @@ -962,9 +967,6 @@ void __init __start_xen(unsigned long mbi_p) serial_init_postirq(); - BUG_ON(!local_irq_is_enabled()); - spin_debug_enable(); - for_each_present_cpu ( i ) { if ( num_online_cpus() >= max_cpus )