Repository navigation
hda-dma: allocate RUNTIME_SHARED for hda_chan - #4269
Conversation
The DMA channels need to be shared among pipelines and DSP cores, allocate buffer for it in RUNTIME_SHARED area. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
lyakh
left a comment
There was a problem hiding this comment.
I'm wondering: do we know exactly how different cores access the same HDA DMA channel? One possibility is, that if the channel is allocated using rzalloc() on core 0 as a part of initialisation, then core 1 uses it exclusively. It initialises its various fields but then the original memset(0) from rzalloc() on core 0 writes caches back and overwrites core 1 data. If that is the case, maybe just adding one writeback after rzalloc() would be an easier fix?
These channels is allocated in the first usage of a channel (on core 0, or a secondary core), and different channels can be used for pipelines run on different Cores. These hda_chan structs can be changed at runtime (e.g. change get/put), so allocate in in uncached area is much easier for us. |
I think they're allocated in |
|
CI showing known and unrelated issue. |
|
@lyakh I suspect the chan lookup/free probably needs the uncache alias as we may try and use a channel twice. TBC though. |
The DMA channels need to be shared among pipelines and DSP cores,
allocate buffer for it in RUNTIME_SHARED area.
Signed-off-by: Keyon Jie yang.jie@linux.intel.com