All kernel level components/services allocate objects
from sys heap again. Separation from the runtime heap
provides more reliable, deterministic power flows.
It also presents an opportunity to implement kernel/app
memory protection on platforms which support it.
A better performance is expected due to much simpler
allocation approach.
In order to enable 'free()', slave cores allocate their
objects from their small dedicated sys heaps and when
the core goes down, the entire heap is reset at once.
Further memory power optimization is possible by moving
each sys heap to a separate memory bank that is powered
on/off along with the slave core.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
There are two paths to delete a task in shedule list. A task would be
deleted when task is completed or cancelled. So it maybe deleted
twice. there is a circle in the schedule list after a sequence
of append-delete operations. This makes a infinite loop in schedule function
Now all of list items are deleted in one place and cancelled when task are complete
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Don't delete item with list_for_item. with list_for_item, a item
is deleted from list but the next of this item is used to visit
the list.
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
Don't delete item with list_for_item. with list_for_item, a item
is deleted from list but the next of this item is used to visit
the list.
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
There are possible that we call list_item_del to same list item twice. This
will cause the list be into chaos. Reset the next and prev pointer to 0
to avoid risk.
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
500us woulld cause dma trace buffer overflow at the boot up time.
Now refine it to 100us to make both scheduler and dma trace happy
Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
If reschedule work timeout is too small. The reschedule will fail.
Workaround this issue by increace the reschedule timeout.
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
waiti can only work with interrupt level 0, check if the level is 0 and
set SOF_IPC_PANIC_WFI panic.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
I've added clks_control field in sof_ipc_dai_ssp_params
struct. I've deleted mclk/bclk/fs_keep_active field. They
will be supported by clks_control field and defined macros.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
We need to writeback clock data, because it's used
in work queue. Also we need to writeback bss in order
to share static pointers with slave cores.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
schedule_task_init and schedule_task_config was removed on the
"Merge remote-tracking branch 'gh/next' into next-master2" commit.
Which is necessary for scheduler task.
Signed-off-by: Bard liao <yung-chuan.liao@intel.com>
We should switch from microseconds to milliseconds as
difference in cycles for current timeout is 150000.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removed dma/dsp race condition that happened within preload phase.
Min buffer size set to entire buffer to avoid dma and dsp
pointers misalignmen in case the period size is not multiple
of the hda dma burst size.
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
Removes zeroing of memory window 3 - it will be now performed
in different place. Zeroing here causes removal of some traces
at the beginning.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Implements multicore traces for both DMA and memory window mode.
Also adds core id to the logs.
Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Added tests for pipeline free and underlining static functions.
Also refactored previously added tests to incorporate code reuse.
Signed-off-by: Jakub Dabek <jakub.dabek@linux.intel.com>
The component data pointer need to be retrieved after dev data
has been invalidated. If wrong order the cd may be set to garbage.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch increases IPC length to be sufficient for e.g. 2x 12th order
IIR configuration. This is near to minimum feasible to enable testing of
equalizers. There may be need to adjust the limit up even more later but
this is the proposal now until we know better the requirements.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch changes equalizer initialization to store the allocated
delay lines buffers address in a single pointer and size component
data. This simplifies the dcache invalidate code avoids knowledge of
filter internals that may change for future intrinsic optimized
version.
The EQ reconfigure and responses switching is by this patch changed to
happen in prepare() to avoid doing unnecessary allocation and free
operations in typical component life cycle. Prior to to prepare sent
configuration is just stored but not initialized into equalizers.
On-the-fly response switching can be enabled later with some work for
the component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>