[Sound-open-firmware] [PATCH] trace: dma: remove disable DMA trace option
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in
esac
-# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace], - AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace and use fallback mailbox trace])) - -AS_IF([test "x$enable_dma_trace" != "xno"], [ - AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace]) - ]) - -AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno") - PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
diff --git a/src/ipc/dma-copy.c b/src/ipc/dma-copy.c index 3c073567..ba7592af 100644 --- a/src/ipc/dma-copy.c +++ b/src/ipc/dma-copy.c @@ -79,9 +79,7 @@ static void dma_complete(void *data, uint32_t type, struct dma_sg_elem *next) if (type == DMA_IRQ_TYPE_LLIST) wait_completed(comp);
-#if defined(CONFIG_DMA_TRACE) ipc_dma_trace_send_position(); -#endif
next->size = DMA_RELOAD_END; } diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c index 8263fffe..4173a276 100644 --- a/src/ipc/intel-ipc.c +++ b/src/ipc/intel-ipc.c @@ -631,7 +631,6 @@ static int ipc_glb_pm_message(uint32_t header) } }
-#if defined(CONFIG_DMA_TRACE) /* * Debug IPC Operations. */ @@ -747,7 +746,6 @@ static int ipc_glb_debug_message(uint32_t header) return -EINVAL; } } -#endif
/* * Topology IPC Operations. @@ -963,10 +961,8 @@ int ipc_cmd(void) return ipc_glb_stream_message(hdr->cmd); case iGS(SOF_IPC_GLB_DAI_MSG): return ipc_glb_dai_message(hdr->cmd); -#if defined(CONFIG_DMA_TRACE) case iGS(SOF_IPC_GLB_TRACE_MSG): return ipc_glb_debug_message(hdr->cmd); -#endif default: trace_ipc_error("eGc"); trace_value(type); diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index c4da98c9..ea91904a 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -8,12 +8,8 @@ libcore_a_SOURCES = \ trace.c \ schedule.c \ agent.c \ - interrupt.c - -if BUILD_DMA_TRACE -libcore_a_SOURCES += \ + interrupt.c \ dma-trace.c -endif
libcore_a_CFLAGS = \ $(ARCH_CFLAGS) \ diff --git a/src/lib/trace.c b/src/lib/trace.c index bfac6d32..de99a4e6 100644 --- a/src/lib/trace.c +++ b/src/lib/trace.c @@ -49,9 +49,7 @@ void _trace_error(uint32_t event) { unsigned long flags; volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif uint64_t time;
if (!trace.enable) @@ -59,12 +57,10 @@ void _trace_error(uint32_t event)
time = platform_timer_get(platform_timer);
-#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event((const char*)dt, sizeof(uint64_t) * 2); -#endif
/* send event by mail box too. */ spin_lock_irq(&trace.lock, flags); @@ -88,9 +84,8 @@ void _trace_error(uint32_t event) void _trace_error_atomic(uint32_t event) { volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif + uint64_t time;
if (!trace.enable) @@ -98,12 +93,10 @@ void _trace_error_atomic(uint32_t event)
time = platform_timer_get(platform_timer);
-#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); -#endif
/* write timestamp and event to trace buffer */ t = (volatile uint64_t*)(MAILBOX_TRACE_BASE + trace.pos); @@ -119,8 +112,6 @@ void _trace_error_atomic(uint32_t event) dcache_writeback_region((void*)t, sizeof(uint64_t) * 2); }
-#if defined(CONFIG_DMA_TRACE) - void _trace_event(uint32_t event) { uint64_t dt[2]; @@ -145,62 +136,6 @@ void _trace_event_atomic(uint32_t event) dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); }
-#else - -void _trace_event(uint32_t event) -{ - unsigned long flags; - uint64_t time, *t; - - if (!trace.enable) - return; - - time = platform_timer_get(platform_timer); - - /* send event by mail box too. */ - spin_lock_irq(&trace.lock, flags); - - /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1); - - if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0; - - spin_unlock_irq(&trace.lock, flags); - - t[0] = time; - t[1] = event; - - /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -} - -void _trace_event_atomic(uint32_t event) -{ - uint64_t time, *t; - - if (!trace.enable) - return; - - time = platform_timer_get(platform_timer); - - /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1); - - if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0; - - t[0] = time; - t[1] = event; - - /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -} - -#endif - void trace_off(void) { trace.enable = 0; @@ -208,10 +143,7 @@ void trace_off(void)
void trace_init(struct reef *reef) { - -#if defined(CONFIG_DMA_TRACE) dma_trace_init_early(reef); -#endif trace.enable = 1; trace.pos = 0; spinlock_init(&trace.lock);
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in
esac
-# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace],
AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [
- AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
- ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
- PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Thanks Xiuli
diff --git a/src/ipc/dma-copy.c b/src/ipc/dma-copy.c index 3c073567..ba7592af 100644 --- a/src/ipc/dma-copy.c +++ b/src/ipc/dma-copy.c @@ -79,9 +79,7 @@ static void dma_complete(void *data, uint32_t type, struct dma_sg_elem *next) if (type == DMA_IRQ_TYPE_LLIST) wait_completed(comp);
-#if defined(CONFIG_DMA_TRACE) ipc_dma_trace_send_position(); -#endif
next->size = DMA_RELOAD_END; } diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c index 8263fffe..4173a276 100644 --- a/src/ipc/intel-ipc.c +++ b/src/ipc/intel-ipc.c @@ -631,7 +631,6 @@ static int ipc_glb_pm_message(uint32_t header) } }
-#if defined(CONFIG_DMA_TRACE) /*
- Debug IPC Operations.
*/ @@ -747,7 +746,6 @@ static int ipc_glb_debug_message(uint32_t header) return -EINVAL; } } -#endif
/*
- Topology IPC Operations.
@@ -963,10 +961,8 @@ int ipc_cmd(void) return ipc_glb_stream_message(hdr->cmd); case iGS(SOF_IPC_GLB_DAI_MSG): return ipc_glb_dai_message(hdr->cmd); -#if defined(CONFIG_DMA_TRACE) case iGS(SOF_IPC_GLB_TRACE_MSG): return ipc_glb_debug_message(hdr->cmd); -#endif default: trace_ipc_error("eGc"); trace_value(type); diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index c4da98c9..ea91904a 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -8,12 +8,8 @@ libcore_a_SOURCES = \ trace.c \ schedule.c \ agent.c \
- interrupt.c
-if BUILD_DMA_TRACE -libcore_a_SOURCES += \
- interrupt.c \ dma-trace.c
-endif
libcore_a_CFLAGS = \ $(ARCH_CFLAGS) \ diff --git a/src/lib/trace.c b/src/lib/trace.c index bfac6d32..de99a4e6 100644 --- a/src/lib/trace.c +++ b/src/lib/trace.c @@ -49,9 +49,7 @@ void _trace_error(uint32_t event) { unsigned long flags; volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif uint64_t time;
if (!trace.enable) @@ -59,12 +57,10 @@ void _trace_error(uint32_t event)
time = platform_timer_get(platform_timer);
-#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event((const char*)dt, sizeof(uint64_t) * 2); -#endif
/* send event by mail box too. */ spin_lock_irq(&trace.lock, flags); @@ -88,9 +84,8 @@ void _trace_error(uint32_t event) void _trace_error_atomic(uint32_t event) { volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif
uint64_t time;
if (!trace.enable)
@@ -98,12 +93,10 @@ void _trace_error_atomic(uint32_t event)
time = platform_timer_get(platform_timer);
-#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); -#endif
/* write timestamp and event to trace buffer */ t = (volatile uint64_t*)(MAILBOX_TRACE_BASE + trace.pos); @@ -119,8 +112,6 @@ void _trace_error_atomic(uint32_t event) dcache_writeback_region((void*)t, sizeof(uint64_t) * 2); }
-#if defined(CONFIG_DMA_TRACE)
- void _trace_event(uint32_t event) { uint64_t dt[2];
@@ -145,62 +136,6 @@ void _trace_event_atomic(uint32_t event) dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); }
-#else
-void _trace_event(uint32_t event) -{
- unsigned long flags;
- uint64_t time, *t;
- if (!trace.enable)
return;
- time = platform_timer_get(platform_timer);
- /* send event by mail box too. */
- spin_lock_irq(&trace.lock, flags);
- /* write timestamp and event to trace buffer */
- t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos);
- trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2)
trace.pos = 0;
- spin_unlock_irq(&trace.lock, flags);
- t[0] = time;
- t[1] = event;
- /* writeback trace data */
- dcache_writeback_region((void *)t, sizeof(uint64_t) * 2);
-}
-void _trace_event_atomic(uint32_t event) -{
- uint64_t time, *t;
- if (!trace.enable)
return;
- time = platform_timer_get(platform_timer);
- /* write timestamp and event to trace buffer */
- t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos);
- trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2)
trace.pos = 0;
- t[0] = time;
- t[1] = event;
- /* writeback trace data */
- dcache_writeback_region((void *)t, sizeof(uint64_t) * 2);
-}
-#endif
- void trace_off(void) { trace.enable = 0;
@@ -208,10 +143,7 @@ void trace_off(void)
void trace_init(struct reef *reef) {
-#if defined(CONFIG_DMA_TRACE) dma_trace_init_early(reef); -#endif trace.enable = 1; trace.pos = 0; spinlock_init(&trace.lock);
On 2018年03月16日 11:40, Pan, Xiuli wrote:
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in esac -# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace], - AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [ - AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace]) - ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Agree to reserve the possibility for mailbox trace, we can set default to use dma trace, which may be helpful for debugging to special cases, e.g. bugs for dma(gpdma or hda dma) itself, new platforms enabling as Xiuli mentioned, the fallback trace do have helped us a lot on these cases and hope it can help in the future also.
Thanks, ~Keyon
Thanks Xiuli
diff --git a/src/ipc/dma-copy.c b/src/ipc/dma-copy.c index 3c073567..ba7592af 100644 --- a/src/ipc/dma-copy.c +++ b/src/ipc/dma-copy.c @@ -79,9 +79,7 @@ static void dma_complete(void *data, uint32_t type, struct dma_sg_elem *next) if (type == DMA_IRQ_TYPE_LLIST) wait_completed(comp); -#if defined(CONFIG_DMA_TRACE) ipc_dma_trace_send_position(); -#endif next->size = DMA_RELOAD_END; } diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c index 8263fffe..4173a276 100644 --- a/src/ipc/intel-ipc.c +++ b/src/ipc/intel-ipc.c @@ -631,7 +631,6 @@ static int ipc_glb_pm_message(uint32_t header) } } -#if defined(CONFIG_DMA_TRACE) /* * Debug IPC Operations. */ @@ -747,7 +746,6 @@ static int ipc_glb_debug_message(uint32_t header) return -EINVAL; } } -#endif /* * Topology IPC Operations. @@ -963,10 +961,8 @@ int ipc_cmd(void) return ipc_glb_stream_message(hdr->cmd); case iGS(SOF_IPC_GLB_DAI_MSG): return ipc_glb_dai_message(hdr->cmd); -#if defined(CONFIG_DMA_TRACE) case iGS(SOF_IPC_GLB_TRACE_MSG): return ipc_glb_debug_message(hdr->cmd); -#endif default: trace_ipc_error("eGc"); trace_value(type); diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index c4da98c9..ea91904a 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -8,12 +8,8 @@ libcore_a_SOURCES = \ trace.c \ schedule.c \ agent.c \ - interrupt.c
-if BUILD_DMA_TRACE -libcore_a_SOURCES += \ + interrupt.c \ dma-trace.c -endif libcore_a_CFLAGS = \ $(ARCH_CFLAGS) \ diff --git a/src/lib/trace.c b/src/lib/trace.c index bfac6d32..de99a4e6 100644 --- a/src/lib/trace.c +++ b/src/lib/trace.c @@ -49,9 +49,7 @@ void _trace_error(uint32_t event) { unsigned long flags; volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif uint64_t time; if (!trace.enable) @@ -59,12 +57,10 @@ void _trace_error(uint32_t event) time = platform_timer_get(platform_timer); -#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event((const char*)dt, sizeof(uint64_t) * 2); -#endif /* send event by mail box too. */ spin_lock_irq(&trace.lock, flags); @@ -88,9 +84,8 @@ void _trace_error(uint32_t event) void _trace_error_atomic(uint32_t event) { volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif
uint64_t time; if (!trace.enable) @@ -98,12 +93,10 @@ void _trace_error_atomic(uint32_t event) time = platform_timer_get(platform_timer); -#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); -#endif /* write timestamp and event to trace buffer */ t = (volatile uint64_t*)(MAILBOX_TRACE_BASE + trace.pos); @@ -119,8 +112,6 @@ void _trace_error_atomic(uint32_t event) dcache_writeback_region((void*)t, sizeof(uint64_t) * 2); } -#if defined(CONFIG_DMA_TRACE)
void _trace_event(uint32_t event) { uint64_t dt[2]; @@ -145,62 +136,6 @@ void _trace_event_atomic(uint32_t event) dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); } -#else
-void _trace_event(uint32_t event) -{ - unsigned long flags; - uint64_t time, *t;
- if (!trace.enable) - return;
- time = platform_timer_get(platform_timer);
- /* send event by mail box too. */ - spin_lock_irq(&trace.lock, flags);
- /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0;
- spin_unlock_irq(&trace.lock, flags);
- t[0] = time; - t[1] = event;
- /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -}
-void _trace_event_atomic(uint32_t event) -{ - uint64_t time, *t;
- if (!trace.enable) - return;
- time = platform_timer_get(platform_timer);
- /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0;
- t[0] = time; - t[1] = event;
- /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -}
-#endif
void trace_off(void) { trace.enable = 0; @@ -208,10 +143,7 @@ void trace_off(void) void trace_init(struct reef *reef) {
-#if defined(CONFIG_DMA_TRACE) dma_trace_init_early(reef); -#endif trace.enable = 1; trace.pos = 0; spinlock_init(&trace.lock);
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 2018年03月16日 12:34, Keyon Jie wrote:
On 2018年03月16日 11:40, Pan, Xiuli wrote:
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in esac -# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace], - AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [ - AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace]) - ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Agree to reserve the possibility for mailbox trace, we can set default to use dma trace, which may be helpful for debugging to special cases,
sorry, I mean that the 'mailbox trace' may be helpful for ...
Thanks, ~Keyon
e.g. bugs for dma(gpdma or hda dma) itself, new platforms enabling as Xiuli mentioned, the fallback trace do have helped us a lot on these cases and hope it can help in the future also.
Thanks, ~Keyon
Thanks Xiuli
diff --git a/src/ipc/dma-copy.c b/src/ipc/dma-copy.c index 3c073567..ba7592af 100644 --- a/src/ipc/dma-copy.c +++ b/src/ipc/dma-copy.c @@ -79,9 +79,7 @@ static void dma_complete(void *data, uint32_t type, struct dma_sg_elem *next) if (type == DMA_IRQ_TYPE_LLIST) wait_completed(comp); -#if defined(CONFIG_DMA_TRACE) ipc_dma_trace_send_position(); -#endif next->size = DMA_RELOAD_END; } diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c index 8263fffe..4173a276 100644 --- a/src/ipc/intel-ipc.c +++ b/src/ipc/intel-ipc.c @@ -631,7 +631,6 @@ static int ipc_glb_pm_message(uint32_t header) } } -#if defined(CONFIG_DMA_TRACE) /* * Debug IPC Operations. */ @@ -747,7 +746,6 @@ static int ipc_glb_debug_message(uint32_t header) return -EINVAL; } } -#endif /* * Topology IPC Operations. @@ -963,10 +961,8 @@ int ipc_cmd(void) return ipc_glb_stream_message(hdr->cmd); case iGS(SOF_IPC_GLB_DAI_MSG): return ipc_glb_dai_message(hdr->cmd); -#if defined(CONFIG_DMA_TRACE) case iGS(SOF_IPC_GLB_TRACE_MSG): return ipc_glb_debug_message(hdr->cmd); -#endif default: trace_ipc_error("eGc"); trace_value(type); diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index c4da98c9..ea91904a 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -8,12 +8,8 @@ libcore_a_SOURCES = \ trace.c \ schedule.c \ agent.c \ - interrupt.c
-if BUILD_DMA_TRACE -libcore_a_SOURCES += \ + interrupt.c \ dma-trace.c -endif libcore_a_CFLAGS = \ $(ARCH_CFLAGS) \ diff --git a/src/lib/trace.c b/src/lib/trace.c index bfac6d32..de99a4e6 100644 --- a/src/lib/trace.c +++ b/src/lib/trace.c @@ -49,9 +49,7 @@ void _trace_error(uint32_t event) { unsigned long flags; volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif uint64_t time; if (!trace.enable) @@ -59,12 +57,10 @@ void _trace_error(uint32_t event) time = platform_timer_get(platform_timer); -#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event((const char*)dt, sizeof(uint64_t) * 2); -#endif /* send event by mail box too. */ spin_lock_irq(&trace.lock, flags); @@ -88,9 +84,8 @@ void _trace_error(uint32_t event) void _trace_error_atomic(uint32_t event) { volatile uint64_t *t; -#if defined(CONFIG_DMA_TRACE) uint64_t dt[2]; -#endif
uint64_t time; if (!trace.enable) @@ -98,12 +93,10 @@ void _trace_error_atomic(uint32_t event) time = platform_timer_get(platform_timer); -#if defined(CONFIG_DMA_TRACE) /* save event to DMA tracing buffer */ dt[0] = time; dt[1] = event; dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); -#endif /* write timestamp and event to trace buffer */ t = (volatile uint64_t*)(MAILBOX_TRACE_BASE + trace.pos); @@ -119,8 +112,6 @@ void _trace_error_atomic(uint32_t event) dcache_writeback_region((void*)t, sizeof(uint64_t) * 2); } -#if defined(CONFIG_DMA_TRACE)
void _trace_event(uint32_t event) { uint64_t dt[2]; @@ -145,62 +136,6 @@ void _trace_event_atomic(uint32_t event) dtrace_event_atomic((const char*)dt, sizeof(uint64_t) * 2); } -#else
-void _trace_event(uint32_t event) -{ - unsigned long flags; - uint64_t time, *t;
- if (!trace.enable) - return;
- time = platform_timer_get(platform_timer);
- /* send event by mail box too. */ - spin_lock_irq(&trace.lock, flags);
- /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0;
- spin_unlock_irq(&trace.lock, flags);
- t[0] = time; - t[1] = event;
- /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -}
-void _trace_event_atomic(uint32_t event) -{ - uint64_t time, *t;
- if (!trace.enable) - return;
- time = platform_timer_get(platform_timer);
- /* write timestamp and event to trace buffer */ - t = (uint64_t *)(MAILBOX_TRACE_BASE + trace.pos); - trace.pos += (sizeof(uint64_t) << 1);
- if (trace.pos > MAILBOX_TRACE_SIZE - sizeof(uint64_t) * 2) - trace.pos = 0;
- t[0] = time; - t[1] = event;
- /* writeback trace data */ - dcache_writeback_region((void *)t, sizeof(uint64_t) * 2); -}
-#endif
void trace_off(void) { trace.enable = 0; @@ -208,10 +143,7 @@ void trace_off(void) void trace_init(struct reef *reef) {
-#if defined(CONFIG_DMA_TRACE) dma_trace_init_early(reef); -#endif trace.enable = 1; trace.pos = 0; spinlock_init(&trace.lock);
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On Fri, 2018-03-16 at 12:43 +0800, Keyon Jie wrote:
On 2018年03月16日 12:34, Keyon Jie wrote:
On 2018年03月16日 11:40, Pan, Xiuli wrote:
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in esac -# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace],
AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace
and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [
- AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
- ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
- PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Agree to reserve the possibility for mailbox trace, we can set default to use dma trace, which may be helpful for debugging to special cases,
sorry, I mean that the 'mailbox trace' may be helpful for ...
We still have a "mailbox" trace mechanism via trace_err() calls. The error mailbox is persistent and low volume so it's unlikley to overflow too. This can be used for enabling DMA trace on future platforms.
Liam
On 3/16/2018 17:04, Liam Girdwood wrote:
On Fri, 2018-03-16 at 12:43 +0800, Keyon Jie wrote:
On 2018年03月16日 12:34, Keyon Jie wrote:
On 2018年03月16日 11:40, Pan, Xiuli wrote:
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in esac -# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace],
AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace
and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [
- AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
- ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
- PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Agree to reserve the possibility for mailbox trace, we can set default to use dma trace, which may be helpful for debugging to special cases,
sorry, I mean that the 'mailbox trace' may be helpful for ...
We still have a "mailbox" trace mechanism via trace_err() calls. The error mailbox is persistent and low volume so it's unlikley to overflow too. This can be used for enabling DMA trace on future platforms.
Thus we need some hard code modify here to allow trace value output. Keep this is the easiest way for us to switch between DAM trace and mailbox trace. I hope we can keep this.
Thanks Xiuli
Liam
On Fri, 2018-03-16 at 17:15 +0800, Pan, Xiuli wrote:
On 3/16/2018 17:04, Liam Girdwood wrote:
On Fri, 2018-03-16 at 12:43 +0800, Keyon Jie wrote:
On 2018年03月16日 12:34, Keyon Jie wrote:
On 2018年03月16日 11:40, Pan, Xiuli wrote:
On 3/15/2018 23:09, Liam Girdwood wrote:
DMA based trace is the standard default trace method. mailbox trace is no longer supported.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com
configure.ac | 10 -------- src/ipc/dma-copy.c | 2 -- src/ipc/intel-ipc.c | 4 --- src/lib/Makefile.am | 6 +---- src/lib/trace.c | 70 +---------------------------------------------------- 5 files changed, 2 insertions(+), 90 deletions(-)
diff --git a/configure.ac b/configure.ac index bb4d2e9f..9b74c6a9 100644 --- a/configure.ac +++ b/configure.ac @@ -241,16 +241,6 @@ case "$with_dsp_core" in esac -# dma trace support (Optional), dma trace by default -AC_ARG_ENABLE([dma-trace],
AS_HELP_STRING([--disable-dma-trace], [Disabled dma trace
and use fallback mailbox trace]))
-AS_IF([test "x$enable_dma_trace" != "xno"], [
- AC_DEFINE([CONFIG_DMA_TRACE], [1], [Configure DMA trace])
- ])
-AM_CONDITIONAL(BUILD_DMA_TRACE, test "x$enable_dma_trace" != "xno")
- PLATFORM_BOOT_LDR_LDSCRIPT="boot_ldr.x" AC_SUBST(PLATFORM_BOOT_LDR_LDSCRIPT)
Hi Liam,
I think we should keep this feature. We may need this feature to debug the dma related bugs. If anything goes wrong with the DMA, or we need to enable DMA on new platform, the DMA trace will not work and we may need fall back to mail box trace to get the debug info.
Agree to reserve the possibility for mailbox trace, we can set default to use dma trace, which may be helpful for debugging to special cases,
sorry, I mean that the 'mailbox trace' may be helpful for ...
We still have a "mailbox" trace mechanism via trace_err() calls. The error mailbox is persistent and low volume so it's unlikley to overflow too. This can be used for enabling DMA trace on future platforms.
Thus we need some hard code modify here to allow trace value output. Keep this is the easiest way for us to switch between DAM trace and mailbox trace. I hope we can keep this.
No major mod/hacks needed, we currently have :-
/* move to config.h */ #define TRACE 1 #define TRACEV 0 #define TRACEE 1
We just need another macro in trace.h to duplicate regular trace in the persistent buffer.
This also means we don't need to rerun configure.
Liam
participants (3)
-
Keyon Jie
-
Liam Girdwood
-
Pan, Xiuli