diff options
author | kaf24@striker.cl.cam.ac.uk <kaf24@striker.cl.cam.ac.uk> | 2002-12-02 20:15:42 +0000 |
---|---|---|
committer | kaf24@striker.cl.cam.ac.uk <kaf24@striker.cl.cam.ac.uk> | 2002-12-02 20:15:42 +0000 |
commit | 73db0f0b5eac809ace72fa597f7b99497d774706 (patch) | |
tree | 419dc6dbb092147a4da058cd74ddc5f820936510 | |
parent | 0a26d281385e3c7f654cf84fc8556854c50a9908 (diff) | |
download | xen-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_ok | 1 | ||||
-rw-r--r-- | xen-2.4.16/arch/i386/setup.c | 4 | ||||
-rw-r--r-- | xen-2.4.16/common/domain.c | 5 |
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); |