trace: add missing spinlocks

Adds missing spinlocks in trace_on(), trace_off() and
trace_flush() functions.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
Tomasz Lauda 2020-01-13 15:22:00 +01:00 committed by Liam Girdwood
parent 93be71b1a7
commit 8e76346741
1 changed files with 23 additions and 3 deletions

View File

@ -192,25 +192,45 @@ _TRACE_EVENT_NTH_IMPL_GROUP(4)
void trace_flush(void) void trace_flush(void)
{ {
struct trace *trace = trace_get();
volatile uint64_t *t; volatile uint64_t *t;
uint32_t flags;
spin_lock_irq(trace->lock, flags);
/* get mailbox position */ /* get mailbox position */
t = (volatile uint64_t *)(MAILBOX_TRACE_BASE + trace_get()->pos); t = (volatile uint64_t *)(MAILBOX_TRACE_BASE + trace->pos);
/* flush dma trace messages */ /* flush dma trace messages */
dma_trace_flush((void *)t); dma_trace_flush((void *)t);
spin_unlock_irq(trace->lock, flags);
} }
void trace_on(void) void trace_on(void)
{ {
trace_get()->enable = 1; struct trace *trace = trace_get();
uint32_t flags;
spin_lock_irq(trace->lock, flags);
trace->enable = 1;
dma_trace_on(); dma_trace_on();
spin_unlock_irq(trace->lock, flags);
} }
void trace_off(void) void trace_off(void)
{ {
trace_get()->enable = 0; struct trace *trace = trace_get();
uint32_t flags;
spin_lock_irq(trace->lock, flags);
trace->enable = 0;
dma_trace_off(); dma_trace_off();
spin_unlock_irq(trace->lock, flags);
} }
void trace_init(struct sof *sof) void trace_init(struct sof *sof)