/* wait for the read lock to be granted  */
asmregparm struct rw_semaphore __sched* rwsem_down_read_failed(struct rw_semaphore *sem)
/* wait for the read lock to be granted  */
asmregparm struct rw_semaphore __sched* rwsem_down_read_failed(struct rw_semaphore *sem)
{
	struct rwsem_waiter waiter;
	waiter.flags = RWSEM_WAITING_FOR_READ;
	rwsem_down_failed_common(sem, &waiter,
				RWSEM_WAITING_BIAS - RWSEM_ACTIVE_BIAS);
	return sem;
}