Re: Worst case performance of up()
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-12-02 20:53:05
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2006-12-02 20:53:05
On Sat, 2006-12-02 at 11:54 +0000, Adrian Cox wrote:
On Sat, 2006-12-02 at 22:15 +1100, Benjamin Herrenschmidt wrote:quoted
I think we are hitting a livelock due to both CPUs trying to perform an atomic operation on the same cache line (or same variable even).I agree.quoted
Can you remind me what CPU this on precisely ? I know that for some CPUs like 970's, Apple code has some weirdo workarounds around atomic ops involving forcing a mispredict when the stwcx. fails ... but if both CPUs are following the exact same pattern, I can't see another way out but an interrupt, unless something in the bus protocol can prevent such livelocks...It's a pair of 7448s in MPX bus mode, with a Tsi109 host bridge.
At this point, we might have good use of Freescale help... there might be something we can do in the construct of the atomic ops to avoid that... Ben.