[Sound-open-firmware] [PATCH v2] Use atomic API without spin lock for trace_error().

yan.wang at linux.intel.com yan.wang at linux.intel.com
Wed Dec 6 08:05:28 CET 2017


From: Yan Wang <yan.wang at linux.intel.com>

When trace_error() is used to save error information into trace buffer, 
the firmware may not in normal state and some spin lock be still locked. 
So it may cause dead lock if trace_error() still uses non-atomic API 
with spin lock.

Signed-off-by: Yan Wang <yan.wang at linux.intel.com>
---
 src/include/reef/trace.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/include/reef/trace.h b/src/include/reef/trace.h
index ef82d75..9497f98 100644
--- a/src/include/reef/trace.h
+++ b/src/include/reef/trace.h
@@ -128,7 +128,7 @@ void trace_init(struct reef * reef);
 /* error tracing */
 #if TRACEE
 #define trace_error(__c, __e) \
-	_trace_error(__c | (__e[0] << 16) | (__e[1] <<8) | __e[2])
+	_trace_error_atomic(__c | (__e[0] << 16) | (__e[1] <<8) | __e[2])
 #define trace_error_atomic(__c, __e) \
 	_trace_error_atomic(__c | (__e[0] << 16) | (__e[1] <<8) | __e[2])
 #else
-- 
2.7.4



More information about the Sound-open-firmware mailing list