On 07/07/2010 07:31 AM, Mike Galbraith wrote:
On Wed, 2010-07-07 at 19:41 +0530, gowrishankar wrote:
On Wednesday 07 July 2010 10:16 AM, Mike Galbraith wrote:
Greetings,
Stress testing, looking to trigger RCU stalls, I've managed to find a
way to repeatably create fireworks. (got RCU stall, see attached)
1. download ltp-full-20100630. Needs to be this version because of
testcase bustage in earlier versions, and must be built with gcc> 4.3,
else testcases will segfault due to a gcc bug.
Hi Mike,
I have seen this segfault esp with GCC v4.3.4. I am about to post this
patch
in ltp:
Signed-off-by: Gowrishankar<gowrishankar.m@xxxxxxxxxx>
---
testcases/realtime/include/librttest.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/testcases/realtime/include/librttest.h
b/testcases/realtime/include/librttest.h
index e526ab4..273de6f 100644
--- a/testcases/realtime/include/librttest.h
+++ b/testcases/realtime/include/librttest.h
@@ -118,9 +118,9 @@ static inline int atomic_add(int i, atomic_t *v)
int __i;
__i = i;
asm volatile(
- "lock; xaddl %0, %1;"
- :"=r"(i)
- :"m"(v->counter), "0"(i));
+ "lock; xaddl %1, %0;"
+ :"=m"(v->counter)
+ :"r"(i), "m" (v->counter));
return i + __i;
#elif defined(__powerpc__)
#define ISYNC_ON_SMP "\n\tisync\n"
--
Please let me know if this patch helps.
Yup, all better.
So with this, the "volatile struct" patch isn't necessary?
If so, perhaps we would be better off converting librttest.h to
implement the atomic functions using the glibc built-ins, ie:
static inline int
atomic_add(atomic_t *addr, int i)
{
return __sync_add_and_fetch(&addr->val, i);
}
It's more maintainable than inline asm and better tested than a roll
your own implementation. Oddly, I believe the original was patterned
after what is in the Linux kernel...
--
Darren
-Mike
--
Darren Hart
IBM Linux Technology Center
Real-Time Linux Team
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html