Changeset 879585a3 in mainline for kernel/arch/ia64/src/mm/as.c


Ignore:
Timestamp:
2007-03-31T22:22:50Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
31d8e10
Parents:
563c2dd
Message:

Simplify synchronization in as_switch().
The function was oversynchronized, which
was causing deadlocks on the address
space mutex.

Now, address spaces can only be switched
when the asidlock is held. This also protects
stealing of ASIDs. No other synchronization
is necessary.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/as.c

    r563c2dd r879585a3  
    3737#include <arch/mm/page.h>
    3838#include <genarch/mm/as_ht.h>
     39#include <genarch/mm/page_ht.h>
    3940#include <genarch/mm/asid_fifo.h>
    4041#include <mm/asid.h>
    41 #include <arch.h>
    4242#include <arch/barrier.h>
    43 #include <synch/spinlock.h>
    4443
    4544/** Architecture dependent address space init. */
     
    5655void as_install_arch(as_t *as)
    5756{
    58         ipl_t ipl;
    5957        region_register rr;
    6058        int i;
    61        
    62         ipl = interrupts_disable();
    63         spinlock_lock(&as->lock);
    6459       
    6560        ASSERT(as->asid != ASID_INVALID);
     
    8176        srlz_d();
    8277        srlz_i();
    83        
    84         spinlock_unlock(&as->lock);
    85         interrupts_restore(ipl);
    8678}
    8779
Note: See TracChangeset for help on using the changeset viewer.