debuggers.hg
changeset 18948: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>
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 )