This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

hdvpss issue :VIP Locked up when start capture.

Hi ,

    I`m debugging on a VIP locked up issue.

    In my usecase, I need to restart vip on some condition. when the VIP restart , it follow this sequence :

vip0 stop-> vip0 delete-> vip0 creat -> vip0 start->vip1 stop-> vip1 delete-> vip1 creat -> vip1 start .

    Sometime vip0 start failed because fullQ is full and it is waiting for the semaphore (handle->semWr) forever :

    here is the trace of code :

/* list processing task */
-> Vps_captTskListUpdate
-> Vps_captTskUpdateList();
-> Vps_CaptTskPutCaptField(pObj, pChObj, &parseDescInfo);
-> VpsUtils_quePut(&pObj->fullQue[Vps_captGetStreamId(parseDescInfo->lChannel)],
pFrame,
BIOS_WAIT_FOREVER);

it run into the else branch which mean the fullQ is full  :

if ( handle->count < handle->maxElements )
{

   ... ...

}

else
{
/*
* que is full
*/

/*

* restore interrupts
*/
Hwi_restore ( cookie );

if ( timeout == BIOS_NO_WAIT )
break; /* non-blocking function call, exit with error */

if ( handle->flags & VPSUTILS_QUE_FLAG_BLOCK_QUE_PUT )
{
/*
* blocking on que put enabled
*/

/*
* take semaphore and block until timeout occurs or
* semaphore is posted
*/
if ( !Semaphore_pend ( handle->semWr, timeout ) )
break; /* timeout happend, exit with error */

...

}

 it is hang here, so that it won`t unlock CLM in Vps_captTskListUpdate().

this issue seems only happen when VIP is captureing 1080P video.

I don`t understand why the fullQ is full when  VIP0 start .I did stop and delete the VIP0 before re-creat and start it  ?

Is it correct that I stop-delete-creat-start the vip instance one by one ?

  • Hi,

     

    First of all, why vip locks up? Are you seeing any overflow issue? If it overflow, you just need to call resetandrestart ioctl to recover from the overflow situation. Are you doing it?

     

    Regards,

    Brijesh

  • hi,

       no,it is not the overflow situation . 

       what I can see is VIP did not capture anything , and no error  message is print out in the log. 

       I follow the tracks of vip0 start code , It have not started  done :

       It stop before captStartList() ->  Vps_captLmLock();  because gVps_captLmObj.lock is unlock .

  • VIP is a port, so it captures only if it receiving some data from external decoder. If it does not receive, it will not capture. Are you sure that VIP is receiving the data correctly? Can you check VIP input size status register to see if it is receiving correct frame size?

     

    Regards,

    Brijesh