Skip to content

Commit 70c725c

Browse files
lyakhlgirdwood
authored andcommitted
ring-buffer: allocate the data buffer on module heap
The ring-buffer data buffer has to be accessible to user-space DP modules, allocate it on module heap. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
1 parent 1b5a5a3 commit 70c725c

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

src/audio/buffers/ring_buffer.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ static void ring_buffer_free(struct sof_audio_buffer *audio_buffer)
9494
if (!audio_buffer)
9595
return;
9696

97-
struct ring_buffer *ring_buffer =
98-
container_of(audio_buffer, struct ring_buffer, audio_buffer);
97+
struct ring_buffer *ring_buffer = container_of(audio_buffer,
98+
struct ring_buffer, audio_buffer);
9999

100-
rfree((__sparse_force void *)ring_buffer->_data_buffer);
100+
sof_heap_free(audio_buffer->heap, (__sparse_force void *)ring_buffer->_data_buffer);
101101
sof_heap_free(audio_buffer->heap, ring_buffer);
102102
}
103103

@@ -362,12 +362,11 @@ struct ring_buffer *ring_buffer_create(struct comp_dev *dev, size_t min_availabl
362362
ring_buffer->data_buffer_size = 3 * max_ibs_obs;
363363

364364
/* allocate data buffer - always in cached memory alias */
365-
ring_buffer->data_buffer_size =
366-
ALIGN_UP(ring_buffer->data_buffer_size, PLATFORM_DCACHE_ALIGN);
367-
ring_buffer->_data_buffer = (__sparse_force __sparse_cache void *)
368-
rballoc_align(user_get_buffer_memory_region(dev->drv),
369-
ring_buffer->data_buffer_size,
370-
PLATFORM_DCACHE_ALIGN);
365+
ring_buffer->data_buffer_size = ALIGN_UP(ring_buffer->data_buffer_size,
366+
PLATFORM_DCACHE_ALIGN);
367+
ring_buffer->_data_buffer = (__sparse_force __sparse_cache void *)sof_heap_alloc(heap,
368+
user_get_buffer_memory_region(dev->drv),
369+
ring_buffer->data_buffer_size, PLATFORM_DCACHE_ALIGN);
371370
if (!ring_buffer->_data_buffer)
372371
goto err;
373372

0 commit comments

Comments
 (0)