aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@striker.cl.cam.ac.uk <kaf24@striker.cl.cam.ac.uk>2002-12-02 20:15:42 +0000
committerkaf24@striker.cl.cam.ac.uk <kaf24@striker.cl.cam.ac.uk>2002-12-02 20:15:42 +0000
commit73db0f0b5eac809ace72fa597f7b99497d774706 (patch)
tree419dc6dbb092147a4da058cd74ddc5f820936510
parent0a26d281385e3c7f654cf84fc8556854c50a9908 (diff)
downloadxen-73db0f0b5eac809ace72fa597f7b99497d774706.tar.gz
xen-73db0f0b5eac809ace72fa597f7b99497d774706.tar.bz2
xen-73db0f0b5eac809ace72fa597f7b99497d774706.zip
bitkeeper revision 1.7 (3debbf6e3uTST4qTwK-s500qgDGA7A)
domain.c, setup.c: SMP fix
-rw-r--r--BitKeeper/etc/logging_ok1
-rw-r--r--xen-2.4.16/arch/i386/setup.c4
-rw-r--r--xen-2.4.16/common/domain.c5
3 files changed, 6 insertions, 4 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index afc0ddebd9..825b553426 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -1,3 +1,4 @@
akw27@boulderdash.cl.cam.ac.uk
kaf24@plym.cl.cam.ac.uk
+kaf24@striker.cl.cam.ac.uk
smh22@boulderdash.cl.cam.ac.uk
diff --git a/xen-2.4.16/arch/i386/setup.c b/xen-2.4.16/arch/i386/setup.c
index 5b5c73f640..f9163148ed 100644
--- a/xen-2.4.16/arch/i386/setup.c
+++ b/xen-2.4.16/arch/i386/setup.c
@@ -295,8 +295,6 @@ void __init start_of_day(void)
init_bh(IMMEDIATE_BH, immediate_bh);
init_apic_mappings(); /* make APICs addressable in our pagetables. */
- sti();
-
#ifndef CONFIG_SMP
APIC_init_uniprocessor();
#else
@@ -308,6 +306,8 @@ void __init start_of_day(void)
*/
#endif
+ sti();
+
zap_low_mappings();
kmem_cache_init();
kmem_cache_sizes_init(max_page);
diff --git a/xen-2.4.16/common/domain.c b/xen-2.4.16/common/domain.c
index 51d9209778..a1d5de21c9 100644
--- a/xen-2.4.16/common/domain.c
+++ b/xen-2.4.16/common/domain.c
@@ -35,6 +35,7 @@ struct task_struct *do_newdomain(void)
{
int retval;
struct task_struct *p = NULL;
+ unsigned long flags;
retval = -ENOMEM;
p = alloc_task_struct();
@@ -56,9 +57,9 @@ struct task_struct *do_newdomain(void)
p->blk_ring_base = (blk_ring_t *)(p->shared_info + 1);
p->net_ring_base = (net_ring_t *)(p->blk_ring_base + 1);
p->pg_head = p->tot_pages = 0;
- write_lock_irq(&tasklist_lock);
+ write_lock_irqsave(&tasklist_lock, flags);
SET_LINKS(p);
- write_unlock_irq(&tasklist_lock);
+ write_unlock_irqrestore(&tasklist_lock, flags);
newdomain_out:
return(p);