[Sound-open-firmware] [PATCH] Revert "Move DMA tracing intialization calling."

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Nov 2 19:26:30 CET 2017


This reverts commit 97addafa1025cdb3413f2c663bc0513a1ecf4cd5.

git bisect tells me this is the source of IPC timeouts, 100% reproducible

[  162.496099] sof-audio sof-audio: error: ipc timed out for 0x90010000 size 0x18
[  162.496590] sof-audio sof-audio: error: cant set params for DMA for Trace-110
[  162.496636] sof-audio sof-audio: error: failed to initialize trace -110
[  162.808132] sof-audio sof-audio: error: ipc timed out for 0x30010000 size 0x3c

The same errors were also reported by Sven Schwermer on the mailing list
on a Tangier device, revert until we figure out what's wrong.

Cc: Sven Schwermer <sven at svenschwermer.de>
Cc: Yan Wang <yan.wang at linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood at linux.intel.com>

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
---
 src/ipc/intel-ipc.c              | 7 +++++++
 src/platform/baytrail/platform.c | 4 ----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c
index 902e5a6..f6d88ef 100644
--- a/src/ipc/intel-ipc.c
+++ b/src/ipc/intel-ipc.c
@@ -583,6 +583,13 @@ static int ipc_dma_trace_config(uint32_t header)
 
 	trace_ipc_error("DA1");
 
+	/* Initialize DMA for Trace*/
+	err = dma_trace_init(&_ipc->dmat);
+	if (err < 0) {
+		trace_ipc_error("eIP");
+		goto error;
+	}
+
 	/* use DMA to read in compressed page table ringbuffer from host */
 	err = get_page_descriptors(iipc, &params->buffer);
 	if (err < 0) {
diff --git a/src/platform/baytrail/platform.c b/src/platform/baytrail/platform.c
index 61596bb..b701196 100644
--- a/src/platform/baytrail/platform.c
+++ b/src/platform/baytrail/platform.c
@@ -46,7 +46,6 @@
 #include <reef/clock.h>
 #include <reef/ipc.h>
 #include <reef/trace.h>
-#include <reef/dma-trace.h>
 #include <reef/audio/component.h>
 #include <config.h>
 #include <string.h>
@@ -297,9 +296,6 @@ int platform_init(struct reef *reef)
 	trace_point(TRACE_BOOT_PLATFORM_IPC);
 	ipc_init(reef);
 
-	/* Initialize DMA for Trace*/
-	dma_trace_init(&reef->ipc->dmat);
-
 	/* init DMACs */
 	trace_point(TRACE_BOOT_PLATFORM_DMA);
 	dmac0 = dma_get(DMA_ID_DMAC0);
-- 
2.11.0



More information about the Sound-open-firmware mailing list