Hi Andi, I rendered my rwsem testsuite down to a single module that takes a bunch of parameters to tell it how many threads to run. Run the module with something like: insmod /tmp/rwsem-any.ko numrd=10 numwr=4 numdg=4 elapse=30 do_sched=1 And it'll start 10 reader threads, 4 writer threads, and 4 write-downgrade threads. It'll run for 30 seconds, and each thread will invoke schedule() after every cycle. The module will exit on error ENOANO if successful so that it doesn't need to be removed later: [root@host135 root]# insmod /tmp/rwsem-any.ko Error inserting `/tmp/rwsem-any.ko': -1 No anode And it'll print a summary to the kernel console: rwsem_any starting tests... Write0: done Read0: done Down0: done rwsem counter = 0 reads taken: 90636 writes taken: 181496 downgrades taken: 90648 David