Remote node creation FAILED
Hi all, I am developing an application based on the scale example in the codec_engine_1_10_01 package. The changes made are essentially adding elements to the ISCALE_Params struct in the codecs/iscale.h file. When I run the application it gives remote node creation failure. The logs obtained are as follows: Calling SCALE main() TraceUtil> Warning: Failed to open local log file "trace/cearmlog.txt", using stdout TraceUtil> Warning: Failed to open dsp CE log file "trace/cedsp0log.txt", using stdout TraceUtil> Warning: Failed to open dsp/bios log file "trace/bioslog.dat", disabling log @0x00046a28:[T:0x4000] ZZ - main> Welcome to app's main(). App-> Application started. @0x00046c68:[T:0x4000] OM - Memory_contigAlloc> Enter(size=1024, align=-1) @0x00046e53:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = 0x40018000. @0x00046f58:[T:0x4000] OM - Memory_contigAlloc> CMEM_getPhys(0x40018000) = 0x84133000. @0x0004701c:[T:0x4000] OM - Memory__addContigBuf> Enter(virtAddr=0x40018000, size=1024, physAddr=0x84133000) @0x000470e4:[T:0x4000] OM - Memory__addContigBuf> creating new contigBuf object @0x000471ac:[T:0x4000] OM - Memory__addContigBuf> returning: cb->phys=0x84133000, cb->size=1024, cb->virt=0x40018000 @0x00047285:[T:0x4000] OM - Memory_contigAlloc> return (0x40018000) @0x00047328:[T:0x4000] OM - Memory_contigAlloc> Enter(size=1024, align=-1) @0x00047445:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = 0x4001b000. @0x00047523:[T:0x4000] OM - Memory_contigAlloc> CMEM_getPhys(0x4001b000) = 0x8413. @0x000475e2:[T:0x4000] OM - Memory__addContigBuf> Enter(virtAddr=0x4001b000, size=1024, physAddr=0x8413) @0x000476b0:[T:0x4000] OM - Memory__addContigBuf> creating new contigBuf object @0x00047785:[T:0x4000] OM - Memory__addContigBuf> returning: cb->phys=0x8413, cb->size=1024, cb->virt=0x4001b000 @0x00047864:[T:0x4000] OM - Memory_contigAlloc> return (0x4001b000) After memory allocation After opening files @0x0004834b:[T:0x4002] OP - daemon> thread created. @0x00048483:[T:0x4000] CE - Engine_open('scale', 0x0, 0xbefffaec) @0x0004856c:[T:0x4000] CE - rserverOpen('./all.x64P'), count = 0 @0x00048634:[T:0x4000] OP - Process_create> Enter(imageName='./all.x64P', attrs=0xbefffaf0) @0x00048fc9:[T:0x4002] OP - Process_create_d> Enter(proc=0x49640) @0x000490c0:[T:0x4002] OP - Process_create_d> Initializing DSP PROC... @0x000495d2:[T:0x4002] OP - Process_create_d> Attaching to DSP PROC... @0x0004ad60:[T:0x4002] OP - Process_create_d> Opening MSGQ pool... @0x0004afcf:[T:0x4002] OP - Process_create_d> Loading ./all.x64P on DSP (2 args)... @0x0005bc65:[T:0x4002] OP - Process_create_d> Starting DSP PROC... @0x0005c21a:[T:0x4002] OP - Process_create_d> Opening remote transport... @0x0005c3fc:[T:0x4002] OP - Process_create_d> return (1) @0x0005c5c3:[T:0x4000] OP - Process_create> return (0x49640) @0x0005c69a:[T:0x4000] CE - rserverOpen('./all.x64P'): 0x42234 done. @0x0005c758:[T:0x4000] OC - Comm_create> Enter(queueName='scale', queue=0x49620, attrs=0x0) @0x0005c921:[T:0x4000] OC - Comm_create> return (0x49678) @0x0005ca27:[T:0x4000] OC - Comm_alloc> Enter(poolId=0x0, msg=0x4962c, size=576) @0x0005cb1d:[T:0x4000] OC - Comm_alloc> msg=0x4032a900, returning (0) @0x0005cbd7:[T:0x4000] OC - Comm_locate> Enter(queueName='rmsq', queue=0x4961c) @0x0005e614:[T:0x4000] OC - Comm_locate> return (0) @0x0005e6f9:[T:0x4000] CE - checkServer(0x49610) @0x0005e7bd:[T:0x4000] OC - Comm_put> Enter(queue=0x0, msg=0x4032a900) @0x0005e8a9:[T:0x4000] OC - Comm_put> return (0) @0x0005e99a:[T:0x4000] OC - Comm_get> Enter(queue=0x1, msg=0xbefffae8, timeout=-1) @0x0005ea82:[T:0x4000] OC - Comm_get> return (0) After opening engine @0x0005ebb2:[T:0x4000] extensions.scale.SCALE - SCALE_create> Enter (server=0x49610, name='scale', params=0xbefffb48) @0x0005ecba:[T:0x4000] CV - VISA_create(0x49610, 'scale', 0xbefffb48, 0x804, 'extensions.scale.ISCALE') @0x0005eda9:[T:0x4000] CE - Engine_createNode(0x49610, 'scale', 804, 0xbefffb48) @0x0005ee78:[T:0x4000] OC - Comm_create> Enter(queueName='gppfromnode', queue=0x49700, attrs=0x0) @0x0005f047:[T:0x4000] OC - Comm_create> return (0x49720) @0x0005f1a3:[T:0x4000] OC - Comm_put> Enter(queue=0x0, msg=0x4032a900) @0x0005f2a5:[T:0x4000] OC - Comm_put> return (0) @0x0005f34d:[T:0x4000] OC - Comm_get> Enter(queue=0x1, msg=0xbefffa9c, timeout=-1) @0x0005f784:[T:0x4000] OC - Comm_get> return (0) @0x0005f857:[T:0x4000] OC - Comm_delete> Enter (comm=0x49720) @0x0005fa68:[T:0x4000] OC - Comm
RE: Remote node creation FAILED
Can you run your app with the CE_DEBUG env var set to 2 or 3? http://tiexpressdsp.com/index.php?title=CE_DEBUG Looks like you're DSP load is ok, but something's going wrong locating or starting the remote alg. CE_DEBUG=3 will increase the amount of trace, as well as provide the DSP-side inlined with the ARM-side API calls. Chris > -Original Message- > From: > davinci-linux-open-source-bounces+cring=ti@linux.davincids > p.com > [mailto:davinci-linux-open-source-bounces+cring=ti@linux.d > avincidsp.com] On Behalf Of bhushan > Sent: Thursday, April 30, 2009 8:23 AM > To: davinci-linux-open-source@linux.davincidsp.com > Subject: Remote node creation FAILED > > Hi all, > I am developing an application based on the scale example in the > codec_engine_1_10_01 package. The changes made are essentially adding > elements to the ISCALE_Params struct in the codecs/iscale.h file. > When I run the application it gives remote node creation failure. The > logs obtained are as follows: > > Calling SCALE main() > TraceUtil> Warning: Failed to open local log file > "trace/cearmlog.txt", using stdout > TraceUtil> Warning: Failed to open dsp CE log file > "trace/cedsp0log.txt", using stdout > TraceUtil> Warning: Failed to open dsp/bios log file > "trace/bioslog.dat", disabling log > @0x00046a28:[T:0x4000] ZZ - main> Welcome to app's main(). > App-> Application started. > @0x00046c68:[T:0x4000] OM - Memory_contigAlloc> > Enter(size=1024, align=-1) > @0x00046e53:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = > 0x40018000. > @0x00046f58:[T:0x4000] OM - Memory_contigAlloc> > CMEM_getPhys(0x40018000) = 0x84133000. > @0x0004701c:[T:0x4000] OM - Memory__addContigBuf> > Enter(virtAddr=0x40018000, size=1024, physAddr=0x84133000) > @0x000470e4:[T:0x4000] OM - Memory__addContigBuf> creating new > contigBuf object > @0x000471ac:[T:0x4000] OM - Memory__addContigBuf> returning: > cb->phys=0x84133000, cb->size=1024, cb->virt=0x40018000 > @0x00047285:[T:0x4000] OM - Memory_contigAlloc> return > (0x40018000) > @0x00047328:[T:0x4000] OM - Memory_contigAlloc> > Enter(size=1024, align=-1) > @0x00047445:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = > 0x4001b000. > @0x00047523:[T:0x4000] OM - Memory_contigAlloc> > CMEM_getPhys(0x4001b000) = 0x8413. > @0x000475e2:[T:0x4000] OM - Memory__addContigBuf> > Enter(virtAddr=0x4001b000, size=1024, physAddr=0x8413) > @0x000476b0:[T:0x4000] OM - Memory__addContigBuf> creating new > contigBuf object > @0x00047785:[T:0x4000] OM - Memory__addContigBuf> returning: > cb->phys=0x8413, cb->size=1024, cb->virt=0x4001b000 > @0x00047864:[T:0x4000] OM - Memory_contigAlloc> return > (0x4001b000) > After memory allocation > After opening files > @0x0004834b:[T:0x4002] OP - daemon> thread created. > @0x00048483:[T:0x4000] CE - Engine_open('scale', 0x0, 0xbefffaec) > @0x0004856c:[T:0x4000] CE - rserverOpen('./all.x64P'), count = 0 > @0x00048634:[T:0x4000] OP - Process_create> > Enter(imageName='./all.x64P', attrs=0xbefffaf0) > @0x00048fc9:[T:0x4002] OP - Process_create_d> Enter(proc=0x49640) > @0x000490c0:[T:0x4002] OP - Process_create_d> > Initializing DSP PROC... > @0x000495d2:[T:0x4002] OP - Process_create_d> Attaching > to DSP PROC... > @0x0004ad60:[T:0x4002] OP - Process_create_d> Opening MSGQ pool... > @0x0004afcf:[T:0x4002] OP - Process_create_d> Loading ./all.x64P > on DSP (2 args)... > @0x0005bc65:[T:0x4002] OP - Process_create_d> Starting DSP PROC... > @0x0005c21a:[T:0x4002] OP - Process_create_d> Opening > remote transport... > @0x0005c3fc:[T:0x4002] OP - Process_create_d> return (1) > @0x0005c5c3:[T:0x4000] OP - Process_create> return (0x49640) > @0x0005c69a:[T:0x4000] CE - rserverOpen('./all.x64P'): > 0x42234 done. > @0x0005c758:[T:0x4000] OC - Comm_create> Enter(queueName='scale', > queue=0x49620, attrs=0x0) > @0x0005c921:[T:0x4000] OC - Comm_create> return (0x49678) > @0x0005ca27:[T:0x4000] OC - Comm_alloc> Enter(poolId=0x0, > msg=0x4962c, size=576) > @0x0005cb1d:[T:0x4000] OC - Comm_alloc> msg=0x4032a900, > returning (0) > @0x0005cbd7:[T:0x4000] OC - Comm_locate> Enter(queueName='rmsq', > queue=0x4961c) > @0x0005e614:[T:0x4000] OC - Comm_locate> return (0) > @0x0005e6f9:[T:0x4000] CE - checkServer(0x49610) > @0x0005e7bd:[T:0x4000] OC - Comm_put> Enter(queue=0x0, > msg=0x4032a900) > @0x0005e8a9
Re: Remote node creation FAILED
Hi Chris, I tried with some code changes and observe that the application runs successfully when I disable the memory allocations added in SCALE_TI_Alloc() function in scale_ti_impl.c file. So there is some problem it seems with the memory allocation. Another problem I am facing is with starting the DSP side traces. I am unable to get them on the ARM side. Can you please suggest some steps for that? regards Bhushan On Thu, Apr 30, 2009 at 10:46 PM, Ring, Chris wrote: > Can you run your app with the CE_DEBUG env var set to 2 or 3? > > http://tiexpressdsp.com/index.php?title=CE_DEBUG > > Looks like you're DSP load is ok, but something's going wrong locating or > starting the remote alg. CE_DEBUG=3 will increase the amount of trace, as > well as provide the DSP-side inlined with the ARM-side API calls. > > Chris > >> -Original Message- >> From: >> davinci-linux-open-source-bounces+cring=ti@linux.davincids >> p.com >> [mailto:davinci-linux-open-source-bounces+cring=ti@linux.d >> avincidsp.com] On Behalf Of bhushan >> Sent: Thursday, April 30, 2009 8:23 AM >> To: davinci-linux-open-source@linux.davincidsp.com >> Subject: Remote node creation FAILED >> >> Hi all, >> I am developing an application based on the scale example in the >> codec_engine_1_10_01 package. The changes made are essentially adding >> elements to the ISCALE_Params struct in the codecs/iscale.h file. >> When I run the application it gives remote node creation failure. The >> logs obtained are as follows: >> >> Calling SCALE main() >> TraceUtil> Warning: Failed to open local log file >> "trace/cearmlog.txt", using stdout >> TraceUtil> Warning: Failed to open dsp CE log file >> "trace/cedsp0log.txt", using stdout >> TraceUtil> Warning: Failed to open dsp/bios log file >> "trace/bioslog.dat", disabling log >> @0x00046a28:[T:0x4000] ZZ - main> Welcome to app's main(). >> App-> Application started. >> @0x00046c68:[T:0x4000] OM - Memory_contigAlloc> >> Enter(size=1024, align=-1) >> @0x00046e53:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = >> 0x40018000. >> @0x00046f58:[T:0x4000] OM - Memory_contigAlloc> >> CMEM_getPhys(0x40018000) = 0x84133000. >> @0x0004701c:[T:0x4000] OM - Memory__addContigBuf> >> Enter(virtAddr=0x40018000, size=1024, physAddr=0x84133000) >> @0x000470e4:[T:0x4000] OM - Memory__addContigBuf> creating new >> contigBuf object >> @0x000471ac:[T:0x4000] OM - Memory__addContigBuf> returning: >> cb->phys=0x84133000, cb->size=1024, cb->virt=0x40018000 >> @0x00047285:[T:0x4000] OM - Memory_contigAlloc> return >> (0x40018000) >> @0x00047328:[T:0x4000] OM - Memory_contigAlloc> >> Enter(size=1024, align=-1) >> @0x00047445:[T:0x4000] OM - Memory_contigAlloc> CMEM_alloc(1024) = >> 0x4001b000. >> @0x00047523:[T:0x4000] OM - Memory_contigAlloc> >> CMEM_getPhys(0x4001b000) = 0x8413. >> @0x000475e2:[T:0x4000] OM - Memory__addContigBuf> >> Enter(virtAddr=0x4001b000, size=1024, physAddr=0x8413) >> @0x000476b0:[T:0x4000] OM - Memory__addContigBuf> creating new >> contigBuf object >> @0x00047785:[T:0x4000] OM - Memory__addContigBuf> returning: >> cb->phys=0x8413, cb->size=1024, cb->virt=0x4001b000 >> @0x00047864:[T:0x4000] OM - Memory_contigAlloc> return >> (0x4001b000) >> After memory allocation >> After opening files >> @0x0004834b:[T:0x4002] OP - daemon> thread created. >> @0x00048483:[T:0x4000] CE - Engine_open('scale', 0x0, 0xbefffaec) >> @0x0004856c:[T:0x4000] CE - rserverOpen('./all.x64P'), count = 0 >> @0x00048634:[T:0x4000] OP - Process_create> >> Enter(imageName='./all.x64P', attrs=0xbefffaf0) >> @0x00048fc9:[T:0x4002] OP - Process_create_d> Enter(proc=0x49640) >> @0x000490c0:[T:0x4002] OP - Process_create_d> >> Initializing DSP PROC... >> @0x000495d2:[T:0x4002] OP - Process_create_d> Attaching >> to DSP PROC... >> @0x0004ad60:[T:0x4002] OP - Process_create_d> Opening MSGQ pool... >> @0x0004afcf:[T:0x4002] OP - Process_create_d> Loading ./all.x64P >> on DSP (2 args)... >> @0x0005bc65:[T:0x4002] OP - Process_create_d> Starting DSP PROC... >> @0x0005c21a:[T:0x4002] OP - Process_create_d> Opening >> remote transport... >> @0x0005c3fc:[T:0x4002] OP - Process_create_d> return (1) >> @0x0005c5c3:[T:0x4000] OP - Process_create> return (0x4964
Error "Remote node creation FAILED " for multithreaded application & combo server
Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
Viraj, 0x80008008 is DSPLink error code DSP_EFAIL (refer to $DSPLINK/gpp/inc/errbase.h file). This can occur in multiple scenarios, and not version mismatch only. In fact, in recent versions of DSPLink, version mismatch returns DSP_ECONFIG error, and not DSP_EFAIL. Someone from CE might be able to help with why this failure is occurring. Regards, Mugdha From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Monday, March 10, 2008 10:18 AM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
Thanks Mugdha, Can you tell me in what scenarios we get DSP_EFAIL (0x80008008) error? (or suggest some related doc). FYI I am using dsplink_1_30_08_02 and CE 1.02. Regards, Viraj From: Kamoolkar, Mugdha [mailto:[EMAIL PROTECTED] Sent: Monday, March 10, 2008 10:30 AM To: Viraj Karandikar; davinci-linux-open-source@linux.davincidsp.com Subject: RE: Error "Remote node creation FAILED " for multithreaded application & combo server Viraj, 0x80008008 is DSPLink error code DSP_EFAIL (refer to $DSPLINK/gpp/inc/errbase.h file). This can occur in multiple scenarios, and not version mismatch only. In fact, in recent versions of DSPLink, version mismatch returns DSP_ECONFIG error, and not DSP_EFAIL. Someone from CE might be able to help with why this failure is occurring. Regards, Mugdha From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Monday, March 10, 2008 10:18 AM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
Vijay, To find out exactly where the failure occurred, you can try the following technique of enabling SET_FAILURE_REASON prints: Enable SET_FAILURE_REASON print: File: /${DSPLINK}/dsplink/gpp/src/gen/trc.c Function: TRC_SetReason () Existing Code: #if defined(DDSP_DEBUG) TRC_3PRINT (TRC_LEVEL7, "Failure [0x%x] in [0x%x] at line %d\n", status, FileId, Line) ; #endif /* #if defined(DDSP_DEBUG) */ Add: PRINT_Printf ("Failure [0x%x] in [0x%x] at line %d\n", status, FileId, Line) ; * Now rebuild the GPP-side of DSPLink. * Run the application * Some kernel prints will be seen of the type: Failure [0x8000800C] in [0x71B] at line 455 To interpret this: * * The numbers in the above statement (0x8000800C, 0x71B and line 455) refer to sources of release v1.40.05. * File /${DSPLINK}/gpp/inc/_signature.h has the identifiers for all source files. * 0x8000800C is the error code. It is DSP_EMEMORY (refer to section above for this interpretation). * The 0x71B refers to file identifiers. From the _signature.h file, this corresponds to FID_C_LDRV_POOL source file, i.e. ldrv_pool.c. * The line number is 455 within the ldrv_pool.c file. This indicates that the failure DSP_EMEMORY is due to failure in the allocation from shared memory, which means that the amount of shared memory specified for the pool cannot fit into the specified memory entry in the configuration. The first SET_FAILURE_REASON print usually indicates the original cause of failure. The subsequent failures usually occur as a result of the first failure. Regards, Mugdha From: Viraj Karandikar [mailto:[EMAIL PROTECTED] Sent: Monday, March 10, 2008 2:17 PM To: Kamoolkar, Mugdha; davinci-linux-open-source@linux.davincidsp.com Subject: RE: Error "Remote node creation FAILED " for multithreaded application & combo server Thanks Mugdha, Can you tell me in what scenarios we get DSP_EFAIL (0x80008008) error? (or suggest some related doc). FYI I am using dsplink_1_30_08_02 and CE 1.02. Regards, Viraj From: Kamoolkar, Mugdha [mailto:[EMAIL PROTECTED] Sent: Monday, March 10, 2008 10:30 AM To: Viraj Karandikar; davinci-linux-open-source@linux.davincidsp.com Subject: RE: Error "Remote node creation FAILED " for multithreaded application & combo server Viraj, 0x80008008 is DSPLink error code DSP_EFAIL (refer to $DSPLINK/gpp/inc/errbase.h file). This can occur in multiple scenarios, and not version mismatch only. In fact, in recent versions of DSPLink, version mismatch returns DSP_ECONFIG error, and not DSP_EFAIL. Someone from CE might be able to help with why this failure is occurring. Regards, Mugdha From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Monday, March 10, 2008 10:18 AM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
I don't suspect this to be a Link error as a fork on this thread is chasing. More likely, it's a mis-configured server.cfg script. As a simple example, consider the following: * codec A and codec B share internal scratch memory * codec A needs 40k, codec B needs 50k * codec A and B are placed into scratch group 0 * there is 64k configured for internal memory The server.cfg script _should_ configure 50k (the max for all codecs) into scratch group 0. However, if the server.cfg script only configured 40k... * If codec A is created first, 40k (max of configured mem - 40k - and requested mem - 40k) will be allocated. When codec B is created, there's not enough memory in scratch (only 40k was allocated), so the creation of alg B may fail. * If codec B is created first, 50k (max of configured mem - 40k - and requested mem - 50k) will be allocated. Creating codec A later will succeed. [ That's a simple example, but the same concept applies to DMA and other resources as well. ] These can get a bit tricky - I might suggest you open a ticket with TI's software support so they can help dig in a bit more. Unfortunately, CE 1.02 had little tracing support for getting further insight into these complex codec resources requests. CE 2.00 and later have much better tracing support for these things, if you have the flexibility to upgrade. Chris From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Sunday, March 09, 2008 9:48 PM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
Thanks Chris, Your guess was correct. DSKT2.ALLOW_EXTERNAL_SCRATCH parameter in server.cfg file was set to "false". Changing it to "true", solved the problem J Thanks again J Viraj From: Ring, Chris [mailto:[EMAIL PROTECTED] Sent: Monday, March 10, 2008 11:16 PM To: Viraj Karandikar; davinci-linux-open-source@linux.davincidsp.com Subject: RE: Error "Remote node creation FAILED " for multithreaded application & combo server I don't suspect this to be a Link error as a fork on this thread is chasing. More likely, it's a mis-configured server.cfg script. As a simple example, consider the following: * codec A and codec B share internal scratch memory * codec A needs 40k, codec B needs 50k * codec A and B are placed into scratch group 0 * there is 64k configured for internal memory The server.cfg script _should_ configure 50k (the max for all codecs) into scratch group 0. However, if the server.cfg script only configured 40k... * If codec A is created first, 40k (max of configured mem - 40k - and requested mem - 40k) will be allocated. When codec B is created, there's not enough memory in scratch (only 40k was allocated), so the creation of alg B may fail. * If codec B is created first, 50k (max of configured mem - 40k - and requested mem - 50k) will be allocated. Creating codec A later will succeed. [ That's a simple example, but the same concept applies to DMA and other resources as well. ] These can get a bit tricky - I might suggest you open a ticket with TI's software support so they can help dig in a bit more. Unfortunately, CE 1.02 had little tracing support for getting further insight into these complex codec resources requests. CE 2.00 and later have much better tracing support for these things, if you have the flexibility to upgrade. Chris From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Sunday, March 09, 2008 9:48 PM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all threads. I also tried ensuring that a thread's call to Engine_open() is complete before other thread calls its Engine_open. (by using mutex) . But it didn't resolve the problem. If I create any number of threads only for codec A or only for codec B, then application works fine with no errors. Any help is welcome J Regards, Viraj ** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [EMAIL PROTECTED] ** ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Re: Error "Remote node creation FAILED " for multithreaded application & combo server
Sorry for picking up an non-active thread. >From what is mentioned below the CE shall allocate (max of configured mem - 40k - and requested mem - 40k). This raises the question of what is the real purpose of having the configured memory. One could have configured it as 0K and as long as the worst case request was made first all would work. I have confirmed it does. Our current understanding was that for various groups you are limiting how much memory can be given to it. I guess its wrong. Can we get a pointer to where to look up on why the configuration and various groupings are present? Regards, Omkiran 2008/3/10 Ring, Chris <[EMAIL PROTECTED]>: > I don't suspect this to be a Link error as a fork on this thread is > chasing. > > More likely, it's a mis-configured server.cfg script. As a simple > example, consider the following: >* codec A and codec B share internal scratch memory >* codec A needs 40k, codec B needs 50k >* codec A and B are placed into scratch group 0 >* there is 64k configured for internal memory > > The server.cfg script _should_ configure 50k (the max for all codecs) into > scratch group 0. However, if the server.cfg script only configured 40k... >* If codec A is created first, 40k (max of configured mem - 40k - and > requested mem - 40k) will be allocated. When codec B is created, there's > not enough memory in scratch (only 40k was allocated), so the creation of > alg B may fail. >* If codec B is created first, 50k (max of configured mem - 40k - and > requested mem - 50k) will be allocated. Creating codec A later will > succeed. > > [ That's a simple example, but the same concept applies to DMA and other > resources as well. ] > > These can get a bit tricky - I might suggest you open a ticket with TI's > software support so they can help dig in a bit more. > > Unfortunately, CE 1.02 had little tracing support for getting further > insight into these complex codec resources requests. CE 2.00 and later > have much better tracing support for these things, if you have the > flexibility to upgrade. > > Chris > > -- > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Viraj > Karandikar > *Sent:* Sunday, March 09, 2008 9:48 PM > *To:* davinci-linux-open-source@linux.davincidsp.com > *Subject:* Error "Remote node creation FAILED " for multithreaded > application & combo server > >Hi, > > I have a combo server with multiple codecs on DSP side and a multithreaded > application on arm side. The application creates a thread for each codec. > > Each thread opens engine and calls codec APIs. Problem I am facing is, if > I try to open 8 threads for codec A first and then 8 threads for codec B, it > works fine. > > But if I reverse the codec order (i.e if I open 8 threads for codec B > first and then 8 threads of codec A, then for codec A threads I am getting > error as -> > > > > @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation > FAILED (0x80008008). > > > > Number of threads out of 8 of codec A which give this error varies for > each run. > > > > I have checked and I am getting non-NULL CE handle with no error code. > Also somewhere on net I read that above error code 0x80008008 indicates dsp > link layer version mismatch. > > But then this error should have come in all cases for all threads. > > > > I also tried ensuring that a thread's call to Engine_open() is complete > before other thread calls its Engine_open. (by using mutex) . But it didn't > resolve the problem. > > If I create any number of threads only for codec A or only for codec B, > then application works fine with no errors. > > Any help is welcome J > > > > Regards, > > Viraj > > ** > > This email and any files transmitted with it are confidential and > > intended solely for the use of the individual or entity to whom they > > are addressed. If you have received this email in error please notify > > [EMAIL PROTECTED] > > ** > > > > > ___ > Davinci-linux-open-source mailing list > Davinci-linux-open-source@linux.davincidsp.com > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source > > ___ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
RE: Error "Remote node creation FAILED " for multithreaded application & combo server
The DSKT2 Users Guide goes over this (specifically, refer to section 1.4): http://www-s.ti.com/sc/techlit/spruev5 You're right, if you're in a closed system, and can always: * create the same versions of the same codecs * with the same create params * in the same order ... you can configure the scratch size to 0k and still get deterministic resource allocation behavior. However, you can break those hard constraints by configuring the scratch sizes to the max - which is what's strongly recommended. Chris From: Omkiran Sharma [mailto:[EMAIL PROTECTED] Sent: Friday, March 14, 2008 12:05 AM To: Ring, Chris Cc: Viraj Karandikar; davinci-linux-open-source@linux.davincidsp.com Subject: Re: Error "Remote node creation FAILED " for multithreaded application & combo server Sorry for picking up an non-active thread. From what is mentioned below the CE shall allocate (max of configured mem - 40k - and requested mem - 40k). This raises the question of what is the real purpose of having the configured memory. One could have configured it as 0K and as long as the worst case request was made first all would work. I have confirmed it does. Our current understanding was that for various groups you are limiting how much memory can be given to it. I guess its wrong. Can we get a pointer to where to look up on why the configuration and various groupings are present? Regards, Omkiran 2008/3/10 Ring, Chris <[EMAIL PROTECTED]>: I don't suspect this to be a Link error as a fork on this thread is chasing. More likely, it's a mis-configured server.cfg script. As a simple example, consider the following: * codec A and codec B share internal scratch memory * codec A needs 40k, codec B needs 50k * codec A and B are placed into scratch group 0 * there is 64k configured for internal memory The server.cfg script _should_ configure 50k (the max for all codecs) into scratch group 0. However, if the server.cfg script only configured 40k... * If codec A is created first, 40k (max of configured mem - 40k - and requested mem - 40k) will be allocated. When codec B is created, there's not enough memory in scratch (only 40k was allocated), so the creation of alg B may fail. * If codec B is created first, 50k (max of configured mem - 40k - and requested mem - 50k) will be allocated. Creating codec A later will succeed. [ That's a simple example, but the same concept applies to DMA and other resources as well. ] These can get a bit tricky - I might suggest you open a ticket with TI's software support so they can help dig in a bit more. Unfortunately, CE 1.02 had little tracing support for getting further insight into these complex codec resources requests. CE 2.00 and later have much better tracing support for these things, if you have the flexibility to upgrade. Chris From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Viraj Karandikar Sent: Sunday, March 09, 2008 9:48 PM To: davinci-linux-open-source@linux.davincidsp.com Subject: Error "Remote node creation FAILED " for multithreaded application & combo server Hi, I have a combo server with multiple codecs on DSP side and a multithreaded application on arm side. The application creates a thread for each codec. Each thread opens engine and calls codec APIs. Problem I am facing is, if I try to open 8 threads for codec A first and then 8 threads for codec B, it works fine. But if I reverse the codec order (i.e if I open 8 threads for codec B first and then 8 threads of codec A, then for codec A threads I am getting error as -> @0x00084474:[T:0x0002800b] CE - Engine_createNode> Remote node creation FAILED (0x80008008). Number of threads out of 8 of codec A which give this error varies for each run. I have checked and I am getting non-NULL CE handle with no error code. Also somewhere on net I read that above error code 0x80008008 indicates dsp link layer version mismatch. But then this error should have come in all cases for all th