@@ -181,24 +181,25 @@ static const struct audio_buffer_ops audio_buffer_ops = {
181181 .set_alignment_constants = comp_buffer_set_alignment_constants
182182};
183183
184- static struct comp_buffer * buffer_alloc_struct (void * stream_addr , size_t size , uint32_t caps ,
184+ static struct comp_buffer * buffer_alloc_struct (void * stream_addr , size_t size ,
185185 uint32_t flags , bool is_shared )
186186{
187187 struct comp_buffer * buffer ;
188188
189189 tr_dbg (& buffer_tr , "buffer_alloc_struct()" );
190190
191- /* allocate new buffer */
192- enum mem_zone zone = is_shared ? SOF_MEM_ZONE_RUNTIME_SHARED : SOF_MEM_ZONE_RUNTIME ;
191+ /* allocate new buffer, but add coherent if shared with other cores */
192+ if (is_shared )
193+ flags |= SOF_MEM_FLAG_COHERENT ;
193194
194- buffer = rzalloc (zone , 0 , SOF_MEM_CAPS_RAM , sizeof (* buffer ));
195+ buffer = rzalloc (flags , sizeof (* buffer ));
195196
196197 if (!buffer ) {
197198 tr_err (& buffer_tr , "buffer_alloc_struct(): could not alloc structure" );
198199 return NULL ;
199200 }
200201
201- buffer -> caps = caps ;
202+ buffer -> flags = flags ;
202203 /* Force channels to 2 for init to prevent bad call to clz in buffer_init_stream */
203204 buffer -> stream .runtime_stream_params .channels = 2 ;
204205
@@ -219,7 +220,7 @@ static struct comp_buffer *buffer_alloc_struct(void *stream_addr, size_t size, u
219220 return buffer ;
220221}
221222
222- struct comp_buffer * buffer_alloc (size_t size , uint32_t caps , uint32_t flags , uint32_t align ,
223+ struct comp_buffer * buffer_alloc (size_t size , uint32_t flags , uint32_t align ,
223224 bool is_shared )
224225{
225226 struct comp_buffer * buffer ;
@@ -233,14 +234,14 @@ struct comp_buffer *buffer_alloc(size_t size, uint32_t caps, uint32_t flags, uin
233234 return NULL ;
234235 }
235236
236- stream_addr = rballoc_align (0 , caps , size , align );
237+ stream_addr = rballoc_align (flags , size , align );
237238 if (!stream_addr ) {
238- tr_err (& buffer_tr , "buffer_alloc(): could not alloc size = %zu bytes of type = %u " ,
239- size , caps );
239+ tr_err (& buffer_tr , "buffer_alloc(): could not alloc size = %zu bytes of flags = 0x%x " ,
240+ size , flags );
240241 return NULL ;
241242 }
242243
243- buffer = buffer_alloc_struct (stream_addr , size , caps , flags , is_shared );
244+ buffer = buffer_alloc_struct (stream_addr , size , flags , is_shared );
244245 if (!buffer ) {
245246 tr_err (& buffer_tr , "buffer_alloc(): could not alloc buffer structure" );
246247 rfree (stream_addr );
@@ -249,7 +250,7 @@ struct comp_buffer *buffer_alloc(size_t size, uint32_t caps, uint32_t flags, uin
249250 return buffer ;
250251}
251252
252- struct comp_buffer * buffer_alloc_range (size_t preferred_size , size_t minimum_size , uint32_t caps ,
253+ struct comp_buffer * buffer_alloc_range (size_t preferred_size , size_t minimum_size ,
253254 uint32_t flags , uint32_t align , bool is_shared )
254255{
255256 struct comp_buffer * buffer ;
@@ -270,20 +271,20 @@ struct comp_buffer *buffer_alloc_range(size_t preferred_size, size_t minimum_siz
270271 preferred_size += minimum_size - preferred_size % minimum_size ;
271272
272273 for (size = preferred_size ; size >= minimum_size ; size -= minimum_size ) {
273- stream_addr = rballoc_align (0 , caps , size , align );
274+ stream_addr = rballoc_align (flags , size , align );
274275 if (stream_addr )
275276 break ;
276277 }
277278
278279 tr_dbg (& buffer_tr , "buffer_alloc_range(): allocated %zu bytes" , size );
279280
280281 if (!stream_addr ) {
281- tr_err (& buffer_tr , "buffer_alloc_range(): could not alloc size = %zu bytes of type = %u " ,
282- minimum_size , caps );
282+ tr_err (& buffer_tr , "buffer_alloc_range(): could not alloc size = %zu bytes of type = 0x%x " ,
283+ minimum_size , flags );
283284 return NULL ;
284285 }
285286
286- buffer = buffer_alloc_struct (stream_addr , size , caps , flags , is_shared );
287+ buffer = buffer_alloc_struct (stream_addr , size , flags , is_shared );
287288 if (!buffer ) {
288289 tr_err (& buffer_tr , "buffer_alloc_range(): could not alloc buffer structure" );
289290 rfree (stream_addr );
@@ -298,7 +299,7 @@ void buffer_zero(struct comp_buffer *buffer)
298299 CORE_CHECK_STRUCT (& buffer -> audio_buffer );
299300
300301 bzero (audio_stream_get_addr (& buffer -> stream ), audio_stream_get_size (& buffer -> stream ));
301- if (buffer -> caps & SOF_MEM_CAPS_DMA )
302+ if (buffer -> flags & SOF_MEM_FLAG_DMA )
302303 dcache_writeback_region ((__sparse_force void __sparse_cache * )
303304 audio_stream_get_addr (& buffer -> stream ),
304305 audio_stream_get_size (& buffer -> stream ));
@@ -320,16 +321,17 @@ int buffer_set_size(struct comp_buffer *buffer, uint32_t size, uint32_t alignmen
320321 return 0 ;
321322
322323 if (!alignment )
323- new_ptr = rbrealloc (audio_stream_get_addr (& buffer -> stream ), SOF_MEM_FLAG_NO_COPY ,
324- buffer -> caps , size , audio_stream_get_size (& buffer -> stream ));
324+ new_ptr = rbrealloc (audio_stream_get_addr (& buffer -> stream ),
325+ buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
326+ size , audio_stream_get_size (& buffer -> stream ));
325327 else
326328 new_ptr = rbrealloc_align (audio_stream_get_addr (& buffer -> stream ),
327- SOF_MEM_FLAG_NO_COPY , buffer -> caps , size ,
329+ buffer -> flags | SOF_MEM_FLAG_NO_COPY , size ,
328330 audio_stream_get_size (& buffer -> stream ), alignment );
329331 /* we couldn't allocate bigger chunk */
330332 if (!new_ptr && size > audio_stream_get_size (& buffer -> stream )) {
331- buf_err (buffer , "resize can't alloc %u bytes type %u " ,
332- audio_stream_get_size (& buffer -> stream ), buffer -> caps );
333+ buf_err (buffer , "resize can't alloc %u bytes type 0x%x " ,
334+ audio_stream_get_size (& buffer -> stream ), buffer -> flags );
333335 return - ENOMEM ;
334336 }
335337
@@ -369,24 +371,24 @@ int buffer_set_size_range(struct comp_buffer *buffer, size_t preferred_size, siz
369371 if (!alignment ) {
370372 for (new_size = preferred_size ; new_size >= minimum_size ;
371373 new_size -= minimum_size ) {
372- new_ptr = rbrealloc (ptr , SOF_MEM_FLAG_NO_COPY , buffer -> caps , new_size ,
373- actual_size );
374+ new_ptr = rbrealloc (ptr , buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
375+ new_size , actual_size );
374376 if (new_ptr )
375377 break ;
376378 }
377379 } else {
378380 for (new_size = preferred_size ; new_size >= minimum_size ;
379381 new_size -= minimum_size ) {
380- new_ptr = rbrealloc_align (ptr , SOF_MEM_FLAG_NO_COPY , buffer -> caps , new_size ,
381- actual_size , alignment );
382+ new_ptr = rbrealloc_align (ptr , buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
383+ new_size , actual_size , alignment );
382384 if (new_ptr )
383385 break ;
384386 }
385387 }
386388
387389 /* we couldn't allocate bigger chunk */
388390 if (!new_ptr && new_size > actual_size ) {
389- buf_err (buffer , "resize can't alloc %zu bytes type %u " , new_size , buffer -> caps );
391+ buf_err (buffer , "resize can't alloc %zu bytes type 0x%x " , new_size , buffer -> flags );
390392 return - ENOMEM ;
391393 }
392394
0 commit comments