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.

Internal Error: Oops: 807 [#2]

Other Parts Discussed in Thread: TVP5146

Hi All,

I am using kernel 2.6.10, DSPLINK Module (1.40.05_p1) and CMEMK version 0x2000000. We've encountered these errors once in a while.

Any idea?

John

 

Unable to handle kernel paging request at virtual address c6d86c8e
pgd = c4d18000
[c6d86c8e] *pgd=8394f011, *pte=00000000, *ppte=00000000
Internal error: Oops: 807 [#2]
Modules linked in: dsplinkk cmemk davinci_capture video_buf mt9v034 mt9t001 tvp5146 viaas_led sdio_memory_fd sdio_davinci_hcd sdio_busdriver sdio_lib
CPU: 0
PC is at LDRV_MSGQ_put+0x28/0xfc [dsplinkk]
LR is at PMGR_MSGQ_put+0x10/0x14 [dsplinkk]
pc : [<bf05604c>]    lr : [<bf04dce8>]    Tainted: PF
sp : c483feb0  ip : c483fed8  fp : c483fed4
r10: 00000000  r9 : c483e000  r8 : 00000000
r7 : c6d86c80  r6 : c483fef4  r5 : bf0647b0  r4 : 00000000
r3 : 00006f0a  r2 : 00020000  r1 : c6d86c80  r0 : 00000002
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: 5317F  Table: 84D18000  DAC: 00000015
Process python (pid: 1281, stack limit = 0xc483e1a0)
Stack: (0xc483feb0 to 0xc4840000)
fea0:                                     002c1000 00006f0a 00008000 c483fef4
fec0: 4304b158 c483e000 c483fee4 c483fed8 bf04dce8 bf056034 c483ff34 c483fee8
fee0: bf04d574 bf04dce8 c4d19070 7fffffff 00000000 00008000 00000002 c6d86c80
ff00: 00000000 00000000 00000000 00000000 c4e58280 ffffffe7 00006f0a 4304b158
ff20: c0029154 00900036 c483ff54 c483ff38 c0089c28 bf04d228 c4e58280 4304b158
ff40: 00000000 0000000c c483ff7c c483ff58 c0089f3c c0089bbc 4304b2a8 00000000
ff60: fffffff7 4304b158 00006f0a c4e58280 c483ffa4 c483ff80 c0089fa0 c0089c4c
ff80: 4b143625 00000001 4304b1fc 40c9a060 00000002 00000036 00000000 c483ffa8
ffa0: c00289c0 c0089f6c 4304b1fc 40c9a060 0000000c 00006f0a 4304b158 002e2fe8
ffc0: 4304b1fc 40c9a060 00000002 41cddc80 ffffffff 4304b28c 40c99168 4304b154
ffe0: 40c99230 4304b100 40c7cc50 401aaf24 20000010 0000000c d2158108 e0408004
Backtrace:
[<bf056024>] (LDRV_MSGQ_put+0x0/0xfc [dsplinkk]) from [<bf04dce8>] (PMGR_MSGQ_put+0x10/0x14 [dsplinkk])
 r8 = C483E000  r7 = 4304B158  r6 = C483FEF4  r5 = 00008000
 r4 = 00006F0A
[<bf04dcd8>] (PMGR_MSGQ_put+0x0/0x14 [dsplinkk]) from [<bf04d574>] (DRV_Ioctl+0x35c/0x764 [dsplinkk])
[<bf04d218>] (DRV_Ioctl+0x0/0x764 [dsplinkk]) from [<c0089c28>] (do_ioctl+0x7c/0x90)
[<c0089bac>] (do_ioctl+0x0/0x90) from [<c0089f3c>] (vfs_ioctl+0x300/0x320)
 r7 = 0000000C  r6 = 00000000  r5 = 4304B158  r4 = C4E58280
[<c0089c3c>] (vfs_ioctl+0x0/0x320) from [<c0089fa0>] (sys_ioctl+0x44/0x68)
 r7 = C4E58280  r6 = 00006F0A  r5 = 4304B158  r4 = FFFFFFF7
[<c0089f5c>] (sys_ioctl+0x0/0x68) from [<c00289c0>] (ret_fast_syscall+0x0/0x2c)
 r7 = 00000036  r6 = 00000002  r5 = 40C9A060  r4 = 4304B1FC
Code: e1a08084 e3540001 e1a02800 e1a07001 (e1c100be)

  • JT said:
    Unable to handle kernel paging request at virtual address c6d86c8e

    This is kind of a generic sort of error, mentioned often on the web and a few times in these forums, though there is not necessarily a good simple solution, though in this case you are using a bit of an older kernel so this may go away if you moved to a newer SDK release. Most likely this is some bug in a driver or invalid arguments passed into a driver, as this means that something in the kernel tried to access an invalid location.

  • One of the reasons for the crash could be that that message queue that you are posting the message to has been closed by another thread working on it.  For example, if a thread was already blocked on MSGQ_get on the semaphore, and then another thread went ahead and closed that MSGQ. Then the semaphore would be deleted, and the thread that was blocked on MSGQ_get would crash. Could that be the scenario for you? If so the application needs to ensure that application synchronization for cleanup is done to ensure threads don't crash.

    Also, as Bernie mentioned, this is a very old version. You can move to a newer version where certain MSGQ related bug fixes have been done which could solve the crash you are seeing

    Deepali
     

  • Hi Deepali,

    I am getting convince that the caused of the error was close to what you've described. Our program sometimes exited with unclean shutdown (kill -9). My question is, is there a way or functionality that I can use to notify the driver (dsplink) to clean the msgq or put it in clean state before I will re-start my application?.

     

    Thanks,

     

    John

  • John,

    I would recommend you to write an application level signal handler. The application level signal handler should call all the relevant DSPLink shut down API's like PROC_detach, PROC_destroy, MSGQ_close etc

    You can have a look at the DSPLink signal handler in for reference code. file ($DSPL\gpp\src\api\Linux\drv_api.c)

    Deepali

  • Hi Deepali,

    I used the readwrite sample program and modified it a bit. I have a follow up questions for you.

    1. In order to call MSGQ_close, I have to pass the msgq. How do I get the msgq?.

    2. The default value of processorId in readwrite is 0. Is this fix value or it depends of my system configuration?

    Thanks,

    John