diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-05-15 12:50:25 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-05-15 12:50:25 +0000 |
commit | 1e13496eb7afb77a6cacc8fc3b2a68e1e6d7c125 (patch) | |
tree | d9c5162695e09f7bd62cf45f7219ef75c25f374e | |
parent | 8a1284a0b37dc0b0522b80ac78f84047ab6278ae (diff) | |
download | xen-1e13496eb7afb77a6cacc8fc3b2a68e1e6d7c125.tar.gz xen-1e13496eb7afb77a6cacc8fc3b2a68e1e6d7c125.tar.bz2 xen-1e13496eb7afb77a6cacc8fc3b2a68e1e6d7c125.zip |
bitkeeper revision 1.891.1.28 (40a61211zpZ9C9yOQSIb1evQ_o-mIw)
Bug fixes relating to IPIs with interrupts disabled.
-rw-r--r-- | xen/arch/i386/process.c | 3 | ||||
-rw-r--r-- | xen/arch/i386/setup.c | 4 | ||||
-rw-r--r-- | xen/common/domain.c | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/xen/arch/i386/process.c b/xen/arch/i386/process.c index 408daa1f14..7524e9c5c5 100644 --- a/xen/arch/i386/process.c +++ b/xen/arch/i386/process.c @@ -128,6 +128,9 @@ void machine_restart(char * __unused) #ifdef CONFIG_SMP cpuid = GET_APIC_ID(apic_read(APIC_ID)); + /* KAF: Need interrupts enabled for safe IPI. */ + __sti(); + if (reboot_smp) { /* check to see if reboot_cpu is valid diff --git a/xen/arch/i386/setup.c b/xen/arch/i386/setup.c index ebd68d3801..06193aeb6b 100644 --- a/xen/arch/i386/setup.c +++ b/xen/arch/i386/setup.c @@ -405,6 +405,8 @@ void __init start_of_day(void) */ #endif + __sti(); + initialize_keytable(); /* call back handling for key codes */ serial_init_stage2(); @@ -422,8 +424,6 @@ void __init start_of_day(void) init_xen_time(); /* initialise the time */ schedulers_start(); /* start scheduler for each CPU */ - sti(); - check_nmi_watchdog(); #ifdef CONFIG_PCI diff --git a/xen/common/domain.c b/xen/common/domain.c index 71294c9417..9f4d2ad964 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -287,7 +287,7 @@ struct pfn_info *alloc_domain_page(struct task_struct *p) #ifdef NO_DEVICES_IN_XEN ASSERT(!in_irq()); #else - ASSERT((p != NULL) || !in_irq()); + ASSERT((p == NULL) || !in_irq()); #endif spin_lock_irqsave(&free_list_lock, flags); |