PATCH powerpc Merge asm-ppc*/rwsem.h 
    Paul Mackerras 
    paulus at samba.org
       
    Sat Sep 24 10:46:33 EST 2005
    
    
  
David Howells writes:
> rwsems on ppc64 should really be using a 64-bit counter, not a 32-bit counter,
> otherwise you limit the maximum number of processes to 32K-ish.
> 
> The counter should be "signed long" really.
It has long annoyed me that we waste half the bits in the rwsem
counter, just because you assume a lowest-common-denominator set of
atomic ops.  IIRC your implementation replaced the earlier ppc
implementation which had a 32-bit counter and didn't have the 32k
process limit.
I'd have to study it in more detail, but I strongly suspect that with
an atomic operation that did something like
	*p = max(*p, limit) + inc
atomically (or alternatively a min), we could increase the limit to at
least 1G processes with a 32-bit counter, without needing to change
your common slow-path implementation.
Such an atomic op is easy to implement with load-and-reserve /
store-conditional instructions.  Look at __sem_update_count in
arch/ppc64/kernel/semaphore.c for an example.
Paul.
    
    
More information about the Linuxppc-dev
mailing list