The following patch is the ARM implementation for RWSEM_XCHGADD_ALGORITHM. Based on David's rwsem benchmark from http://lwn.net/Articles/89191/ , I see a consistent 5-6% increase in the number of reads and writes taken as compared to RWSEM_GENERIC_SPINLOCK on a dual core ARMv7. So far I have tested numrd=1 numwr=1 numdg=1 do_sched=1 numrd=10 numwr=10 numdg=1 do_sched=1 numrd=20 numwr=20 numdg=1 do_sched=1 Can anyone else help to test this patch on other ARM systems ? Cheers, Ashwin