On Fri, 2015-03-06 at 13:12 -0800, Jason Low wrote: > In owner_running() there are 2 conditions that would make it return > false: if the owner changed or if the owner is not running. However, > that patch continues spinning if there is a "new owner" but it does not > take into account that we may want to stop spinning if the owner is not > running (due to getting rescheduled).
So you're rationale is that we're missing this need_resched: while (owner_running(sem, owner)) { /* abort spinning when need_resched */ if (need_resched()) { rcu_read_unlock(); return false; } } Because the owner_running() would return false, right? Yeah that makes sense, as missing a resched is a bug, as opposed to our heuristics being so painfully off. Sasha, Ming (Cc'ed), does this address the issues you guys are seeing? Thanks, Davidlohr -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/