@@ -210,7 +210,7 @@ AEEResult htp_iface_close(remote_handle64 handle) {
210210 return AEE_SUCCESS ;
211211}
212212
213- AEEResult htp_iface_mmap (remote_handle64 handle , uint32 fd , uint32 size , uint32 pinned ) {
213+ AEEResult htp_iface_mmap (remote_handle64 handle , uint32_t fd , uint32_t size ) {
214214 struct htp_context * ctx = (struct htp_context * ) handle ;
215215 if (!ctx ) {
216216 return AEE_EBADPARM ;
@@ -220,7 +220,6 @@ AEEResult htp_iface_mmap(remote_handle64 handle, uint32 fd, uint32 size, uint32
220220 for (uint32_t i = 0 ; i < HTP_MAX_MMAPS ; i ++ ) {
221221 struct htp_mmap * m = & ctx -> mmap [i ];
222222 if (m -> fd == fd ) {
223- m -> pinned = pinned ;
224223 return AEE_SUCCESS ;
225224 }
226225 }
@@ -229,7 +228,7 @@ AEEResult htp_iface_mmap(remote_handle64 handle, uint32 fd, uint32 size, uint32
229228 for (uint32_t i = 0 ; i < HTP_MAX_MMAPS ; i ++ ) {
230229 struct htp_mmap * m = & ctx -> mmap [i ];
231230 if (!m -> size ) {
232- FARF (HIGH , "mmap : fd %u size %u pinned %u " , fd , size , pinned );
231+ FARF (HIGH , "mmap : fd %u size %u" , fd , size );
233232#if __HVX_ARCH__ > 73
234233 void * va = HAP_mmap2 (NULL , size , HAP_PROT_READ | HAP_PROT_WRITE , 0 , fd , 0 );
235234#else
@@ -248,7 +247,6 @@ AEEResult htp_iface_mmap(remote_handle64 handle, uint32 fd, uint32 size, uint32
248247 m -> base = (uint64_t ) va ;
249248 m -> fd = fd ;
250249 m -> size = size ;
251- m -> pinned = pinned ;
252250
253251 return AEE_SUCCESS ;
254252 }
@@ -275,7 +273,6 @@ AEEResult htp_iface_munmap(remote_handle64 handle, uint32 fd) {
275273 m -> size = 0 ;
276274 m -> base = NULL ;
277275 m -> fd = -1 ;
278- m -> pinned = 0 ;
279276 }
280277 }
281278
@@ -358,7 +355,7 @@ static void vtcm_free(struct htp_context * ctx) {
358355static void htp_packet_callback (dspqueue_t queue , int error , void * context );
359356static void htp_error_callback (dspqueue_t queue , int error , void * context );
360357
361- AEEResult htp_iface_start (remote_handle64 handle , uint32 sess_id , uint64 dsp_queue_id , uint32 n_hvx , uint32 use_hmx ) {
358+ AEEResult htp_iface_start (remote_handle64 handle , uint32 sess_id , uint64 dsp_queue_id , uint32 n_hvx , uint32 use_hmx , uint64_t max_vmem ) {
362359 struct htp_context * ctx = (struct htp_context * ) handle ;
363360
364361 if (!ctx ) {
@@ -376,12 +373,12 @@ AEEResult htp_iface_start(remote_handle64 handle, uint32 sess_id, uint64 dsp_que
376373 htp_error_callback , // Error callback; no errors expected on the DSP
377374 (void * ) ctx , // Callback context
378375 & ctx -> queue );
379-
380376 if (err ) {
381377 FARF (ERROR , "Queue import failed with 0x%08x" , (unsigned ) err );
382378 return err ;
383379 }
384380
381+ ctx -> max_vmem = max_vmem ;
385382 ctx -> thread_id = qurt_thread_get_id ();
386383 ctx -> thread_prio = qurt_thread_get_priority (ctx -> thread_id );
387384
@@ -622,8 +619,8 @@ static inline bool reuse_buf(struct htp_context *ctx, uint32_t *m_reuse, struct
622619}
623620
624621static inline void drop_mmap (struct htp_context * ctx , struct htp_mmap * m ) {
625- if (m -> size && ! m -> pinned ) {
626- FARF (HIGH , "unmap : fd %u base %p size %u pinned %u " , m -> fd , (void * ) m -> base , (uint32_t ) m -> size , m -> pinned );
622+ if (m -> size ) {
623+ FARF (HIGH , "unmap : fd %u base %p size %u" , m -> fd , (void * ) m -> base , (uint32_t ) m -> size );
627624#if __HVX_ARCH__ > 73
628625 HAP_munmap2 ((void * ) m -> base , m -> size );
629626#else
@@ -660,9 +657,8 @@ static inline void mmap_buf(struct htp_context *ctx, struct htp_buf_desc *b) {
660657 m -> base = b -> base = (uint64_t ) va ;
661658 m -> fd = b -> fd ;
662659 m -> size = b -> size ;
663- m -> pinned = 0 ;
664660
665- FARF (HIGH , "mmap : fd %u base %p size %u pinned %u " , m -> fd , (void * ) m -> base , (uint32_t ) m -> size , m -> pinned );
661+ FARF (HIGH , "mmap : fd %u base %p size %u" , m -> fd , (void * ) m -> base , (uint32_t ) m -> size );
666662 return ;
667663 }
668664 }
@@ -672,8 +668,8 @@ static void prep_op_bufs(struct htp_context *ctx, struct htp_buf_desc *bufs, uin
672668 uint32_t m_reuse = 0 ; // mmap reuse mask (index from ctx->mmap array)
673669 uint32_t b_reuse = 0 ; // buf reuse count
674670
675- size_t m_vmem = 0 ; // mapped vmem
676- size_t e_vmem = 0 ; // extra vmem
671+ uint64_t m_vmem = 0 ; // mapped vmem
672+ uint64_t e_vmem = 0 ; // extra vmem
677673
678674 // See what we can reuse
679675 for (uint32_t i = 0 ; i < n_bufs ; i ++ ) {
@@ -687,9 +683,10 @@ static void prep_op_bufs(struct htp_context *ctx, struct htp_buf_desc *bufs, uin
687683 // See how much vmem we have mmaped right now
688684 for (uint32_t i = 0 ; i < HTP_MAX_MMAPS ; i ++ ) { m_vmem += ctx -> mmap [i ].size ; }
689685
690- FARF (HIGH , "prep-bufs : pass1 mmap-vmem %zu extra-vmem %zu n-bufs %u b-reuse %u" , m_vmem , e_vmem , n_bufs , b_reuse );
686+ FARF (HIGH , "prep-bufs : pass1 mmap-vmem %zu extra-vmem %zu max-vmem %zu : n-bufs %u b-reuse %u" ,
687+ (size_t ) m_vmem , (size_t ) e_vmem , (size_t ) ctx -> max_vmem , n_bufs , b_reuse );
691688
692- if ((m_vmem + e_vmem ) > HTP_OP_MAX_VMEM ) {
689+ if ((m_vmem + e_vmem ) > ctx -> max_vmem ) {
693690 // Drop unused mappings
694691 for (uint32_t i = 0 ; i < HTP_MAX_MMAPS ; i ++ ) {
695692 bool used = m_reuse & (1 <<i );
0 commit comments