From 4967f00583bf6700651649ef08cd6d4afe6c3b29 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 8 Jun 2011 18:09:19 -0400 Subject: [PATCH] rcutorture: make goflag volatile Even cmm_barrier may not be enough as a compiler barrier in the presence of static variables, and cmm_mb would not be either! The compiler assumes that calling a function does not clobber static variables if it can prove that they do not escape (which also implies the correct phase of the moon). Rather than sprinkling the code with compiler barriers, I am taking the easy way out and declaring the variable volatile. Without this patch, rcutorture_qsbr never finishes for me (GCC 4.5.0). Signed-off-by: Paolo Bonzini Signed-off-by: Mathieu Desnoyers --- tests/rcutorture.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/rcutorture.h b/tests/rcutorture.h index c5253d9..5ba3d2b 100644 --- a/tests/rcutorture.h +++ b/tests/rcutorture.h @@ -79,7 +79,8 @@ char argsbuf[64]; #define GOFLAG_RUN 1 #define GOFLAG_STOP 2 -int goflag __attribute__((__aligned__(CAA_CACHE_LINE_SIZE))) = GOFLAG_INIT; +volatile int goflag __attribute__((__aligned__(CAA_CACHE_LINE_SIZE))) + = GOFLAG_INIT; #define RCU_READ_RUN 1000 -- 2.34.1