ia64/xen-unstable

changeset 18920:df32584505c2

x86: enable interrupts explicitly in __start_xen()

Instead of relying on smp_prepare_cpus() (via check_nmi_watchdog()) or
init_xen_time() (via init_platform_timer() -> plt_overflow())
implicitly enabling interrupts, enable them explicitly once safe to do
so (it may actually be possible to move this even further up, but I
don't think that would buy us much).

Signed-off-by: Jan Beulich <jbeulich@novell.com>

Also move spin_debug_enable() a bit higer. Moving it above
smp_prepare_cpus() didn't work for some reason though!

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Thu Dec 11 13:25:28 2008 +0000 (2008-12-11)
parents 1391e1a444c2
children 7802a247e6f9
files xen/arch/x86/setup.c
line diff
     1.1 --- a/xen/arch/x86/setup.c	Thu Dec 11 13:10:19 2008 +0000
     1.2 +++ b/xen/arch/x86/setup.c	Thu Dec 11 13:25:28 2008 +0000
     1.3 @@ -941,6 +941,9 @@ void __init __start_xen(unsigned long mb
     1.4          set_in_cr4(X86_CR4_OSFXSR);
     1.5      if ( cpu_has_xmm )
     1.6          set_in_cr4(X86_CR4_OSXMMEXCPT);
     1.7 +
     1.8 +    local_irq_enable();
     1.9 +
    1.10  #ifdef CONFIG_X86_64
    1.11      vesa_mtrr_init();
    1.12  #endif
    1.13 @@ -950,6 +953,8 @@ void __init __start_xen(unsigned long mb
    1.14  
    1.15      smp_prepare_cpus(max_cpus);
    1.16  
    1.17 +    spin_debug_enable();
    1.18 +
    1.19      /*
    1.20       * Initialise higher-level timer functions. We do this fairly late
    1.21       * (post-SMP) because the time bases and scale factors need to be updated 
    1.22 @@ -962,9 +967,6 @@ void __init __start_xen(unsigned long mb
    1.23  
    1.24      serial_init_postirq();
    1.25  
    1.26 -    BUG_ON(!local_irq_is_enabled());
    1.27 -    spin_debug_enable();
    1.28 -
    1.29      for_each_present_cpu ( i )
    1.30      {
    1.31          if ( num_online_cpus() >= max_cpus )