• Jeremy Kerr's avatar
    powerpc/spufs: Use state_mutex for switch_log locking, and prevent multiple openers · f5ed0eb6
    Jeremy Kerr authored
    Currently, we use ctx->mapping_lock and ctx->switch_log->lock for the
    context switch log. The mapping lock only prevents concurrent open()s,
    so we require the switch_lock->lock for reads.
    
    Since writes to the switch log buffer occur on context switches, we're
    better off synchronising with the state_mutex, which is held during a
    switch. Since we're serialised througout the buffer reads and writes,
    we can use the state mutex to protect open and release too, and
    can now kfree() the log buffer on release. This allows us to perform
    the switch log notify without taking any extra locks.
    
    Because the buffer is only present while the file is open, we can use
    it to prevent multiple simultaneous openers.
    Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
    f5ed0eb6
file.c 63.8 KB