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.

Help tracing kernel oops.

Hi,

I've ported a driver for the MT9P031 sensor to the MT9V023 sensor.  All looks good when I boot the kernel.  The sensor is detected correctly, and configured via i2c.  Soon after starting encode_stream, with some mods to talk to the new sensor, I get a kernel oops, that looks like a buffer overflow.  I don't see why this should be yet.  The MT9V023 sensor is lower res, so I wouldn't have thought I would get a buffer overflow by forgetting to change a resolution value somewhere.  Anyway, here's a dump of output with various bits of debug turned on.  What can I do to find the bug?

# Encode Debug: NTSC selected
CVBR
Encode demo started.
Encode Debug: Codec Engine initialized
VGA MODE
Eninside mt9v023_setstd: 1e 1e
code Debug: Pause object opened
Encode Debug: Init rendezvous opened for 8 threads
Encode Debug: Cleanup rendezvous opened forMicro_Specific_Setting
 8 threads
Encovpfe vpfe.1:
 Validation pass
de Debug: Priming rendezvous opened for 2 threads
Encode Debug: captureWidth = 640, captureHeight = 480
Encode Debug: Capture thread created
queue id:131075
Encode Debug: Video file successfully opened
writerThrFxn: init complete
Encode Debug: 3 capture buffers were successfully allocated.
Encode Debug: Capture driver buffer 0 at physical address 1122033664 mapped to virtual address 0x82800000
Encode Debug: Capture driver buffer 1 at physical address 1122758656 mapped to virtual address 0x84900000
Encode Debug: Capture driver buffer 2 at physical address 1123483648 mapped to virtual address 0x84a00000
Encode Debug: Video capture initialized and started
captureThrFxn: init complete
Msg_CTRL: enter main loop
Encode Debug: Writer thread created
EStarting mt9v023_setgain with gain = 11...ncode Debug: Vid<7>i2c_adapter i2c-0:
End of mt9v023_setgain...eo file successf<7>i2c_adapter i2c-0:
Starting mt9v023_setExposure with shutter = 488...ully opened
wri<7>i2c_adapter i2c-0:
End of mt9v023_setExposure...terThrFxn2: init<7>i2c_adapter i2c-0:
Starting mt9v023_setBin with bin = 32... complete
Encod<7>i2c_adapter i2c-0:
End of mt9v023_setBin...e Debug: Writer thread 2 created
IPNC-1.0.6 (james@Ubuntu-Desktop) (gcc version 3.4.3 (MontaVista 3.4.3-
Check_AutoIris: 0
Appro XDM
Aew_Cal_read_parameter !!
V4l2_Sensor_gain: 11
V4l2_Sensor_exposure: 488
aewThrFxn: init complete
Encode Debug: Aew thread created
PtzThrFxn: init complete
Encode Debug: ptz thread created
Encode Debug: C<3>CMEMK Error: GETPHYS: Failed to convert virtual 0xff to physical.
odec Engine openCMEMK Error: GETPHYS: Failed to convert virtual 0x102 to physical.
ed in video threCMEMK Error: GETPHYS: Failed to convert virtual 0xff to physical.
ad
Encode DebugCMEMK Error: GETPHYS: Failed to convert virtual 0x102 to physical.
: videoEncodeAlgCreate
CPU MIPS = 107.720001
CPU is 216Mhz
bUnable to handle kernel paging request at virtual address 00800080
pgd = c2b9c000
[00800080] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in: musb_hdrc sbull dm350mmap cmemk
CPU: 0
PC is at kmem_cache_alloc+0x20/0x54
LR is at mempool_alloc+0x84/0x19c
pc : [<c0073e88>]    lr : [<c006e964>]    Not tainted
sp : c3367a68  ip : 00800080  fp : c3367a7c
r10: 00000020  r9 : 00000002  r8 : c3367aa0
r7 : c3366000  r6 : c47f5dc0  r5 : 40000013  r4 : c3367a98
r3 : c29067a0  r2 : 40000093  r1 : 00000220  r0 : c29067a0
Flags: nZcv  IRQs off  FIQs on  Mode SVC_32  Segment user
Control: 5317F  Table: 82B9C000  DAC: 00000015
Process encode_stream (pid: 1080, stack limit = 0xc33661a0)
Stack: (0xc3367a68 to 0xc3368000)
7a60:                   c3367a98 c2b70d98 c3367ae4 c3367a80 c006e964 c0073e78
7a80: c295b580 00000020 00000000 c2a032e0 c0063c80 c3367aac c3367aac c3367aa8
7aa0: 00000000 c2a032e0 c0063c80 c3367aac c3367aac c2a032e0 c0063c80 c2b70d98
7ac0: c2b70d98 00000000 c3366000 c23f1380 00000020 c467ca80 c3367afc c3367ae8
7ae0: c0183948 c006e8f0 c2b70d98 c467ca70 c3367b0c c3367b00 c017a048 c0183934
7b00: c3367b44 c3367b10 c017c560 c017a028 00000000 c3367b20 c0055cc4 00000000
7b20: c467ca70 00000001 c3366000 00000000 00000001 00326c5f c3367b84 c3367b48
7b40: c017d480 c017c370 c337fe00 00000000 c02c9ba8 c4d65f20 c295b580 c3367ba8
7b60: c467ca70 c3367bb0 c467cb60 c4d65f20 c4d6ab60 00000000 c3367c0c c3367b88
7b80: c017dbc4 c017d198 c3367bb4 c3367b98 c00476ac c0047504 00000000 c2a032e0
7ba0: c0063c80 c3367bbc c3367bbc c3367bb8 00000000 c2a032e0 c0063c80 c3367bbc
7bc0: c3367bbc c0073e78 c033d698 00000000 00000000 c2a032e0 c0063c80 c3367bf4
7be0: c3367bf4 c4d6ab28 c4d65f20 00000000 00000000 c4d65f20 00000008 00000200
7c00: c3367c5c c3367c10 c017dcd4 c017d958 c02c2890 00000010 c4d6ab60 c032eb74
7c20: c3367c5c c3367c30 c00924cc c006e8f0 c3367c7c 00000000 c2b69ae0 c2b69ae0
7c40: c4d65f20 c2b69ae0 00000000 00000000 c3367c7c c3367c60 c008f9e4 c017dbfc
7c60: c2b69ae0 c03e90c0 00000000 00000008 c3367cdc c3367c80 c0091e78 c008f8b4
7c80: 00000000 c2b69ae0 000004c8 c00eacb4 c2b69ae0 c2b69ab0 c2b69a80 c2b69a50
7ca0: c2b69bd0 c2b69c00 c2b69c30 c2b69c60 c006a928 c03e90d8 c03e90c0 c4d6abfc
7cc0: 00000000 00000000 c4d2e580 00000010 c3367d3c c3367ce0 c00732bc c0091b7c
7ce0: c02c20e4 c3367d50 00000000 00000000 c3367d3c c3367d00 c006ffe0 c006fc18
7d00: 00000000 00000000 00000010 c3367d18 c0047b28 c3366000 00000000 0000000f
7d20: 00000010 c4d6abfc c3367d50 00000010 c3367d84 c3367d40 c00737cc c0073214
7d40: 00000098 00000010 00000000 c4d2e580 c03a91b8 c03e9018 60000013 c3367de0
7d60: 00000000 00000000 c4d2e580 00000001 c3366000 00000000 c3367dac c3367d88
7d80: c0073988 c00735e4 c3367dbc 00099000 00001000 c3367de0 c4d2e580 00000000
7da0: c3367e3c c3367db0 c006b828 c0073808 c3367ddc 00000000 00099000 00000000
7dc0: c3367e4c 00000098 00000000 c4d6ab60 c3367f78 c4d2e580 c4d2e5cc c4d6abfc
7de0: 00000000 00000010 00000010 00000000 00000000 00000000 00000001 00000010
7e00: 00000020 00000000 00000000 c00ee950 c2a19cc8 00000001 c3367f04 c3367ea0
7e20: c4d2e580 00000000 00000001 c4d2e580 c3367e9c c3367e40 c006e2cc c006b708
7e40: c3367e60 c006bc58 00000001 c04197e0 c3367e7c c3367f78 c3367f20 c3367ea0
7e60: 00000000 00099000 45dba008 00000000 00000000 00000000 c3367f04 c3367ea0
7e80: c4d2e580 00000000 00000000 00900003 c3367f4c c3367ea0 c006e430 c006e0e4
7ea0: 00000001 c335da68 00000000 00000001 ffffffff c4d2e580 c33cf1f0 00000000
7ec0: c3367f0c 00000000 c007e3f0 c007dd4c c2a032e0 c3367ee0 00000000 00000000
7ee0: 00000022 00100073 c4d5d8b0 00000000 45e54000 00001000 00000000 c2a032e0
7f00: c0063c80 c3367f04 c3367f04 c007d864 00100073 00000000 00000000 c008c114
7f20: 45dba008 00099000 00099000 c4d2e580 45dba008 c006e39c c3367f78 c3366000
7f40: c3367f74 c3367f50 c008c804 c006e3ac c3367fa4 00000000 00000000 c4d2e580
7f60: 00000003 c00312f4 c3367fa4 c3367f78 c008ca50 c008c750 00000000 00000000
7f80: 00000000 00000001 0000008c 00000000 001d8ad8 00099000 00000000 c3367fa8
7fa0: c0030b60 c008ca18 00000000 001d8ad8 0000001e 45dba008 00099000 00000000
7fc0: 00000000 001d8ad8 00099000 45dba008 00099000 00099000 00000000 400184f8
7fe0: 00000000 befff314 401b3e20 4019aa00 60000010 0000001e 00000000 00000000
Backtrace:
[<c0073e68>] (kmem_cache_alloc+0x0/0x54) from [<c006e964>] (mempool_alloc+0x84/0x19c)
 r5 = C2B70D98  r4 = C3367A98
[<c006e8e0>] (mempool_alloc+0x0/0x19c) from [<c0183948>] (as_set_request+0x24/0x84)
[<c0183924>] (as_set_request+0x0/0x84) from [<c017a048>] (elv_set_request+0x30/0x3c)
 r5 = C467CA70  r4 = C2B70D98
[<c017a018>] (elv_set_request+0x0/0x3c) from [<c017c560>] (get_request+0x200/0x334)
[<c017c360>] (get_request+0x0/0x334) from [<c017d480>] (__make_request+0x2f8/0x514)
[<c017d188>] (__make_request+0x0/0x514) from [<c017dbc4>] (generic_make_request+0x27c/0x2a4)
[<c017d948>] (generic_make_request+0x0/0x2a4) from [<c017dcd4>] (submit_bio+0xe8/0x104)
[<c017dbec>] (submit_bio+0x0/0x104) from [<c008f9e4>] (submit_bh+0x140/0x160)
 r7 = 00000000  r6 = 00000000  r5 = C2B69AE0  r4 = C4D65F20
[<c008f8a4>] (submit_bh+0x0/0x160) from [<c0091e78>] (block_read_full_page+0x30c/0x32c)
 r7 = 00000008  r6 = 00000000  r5 = C03E90C0  r4 = C2B69AE0
[<c0091b6c>] (block_read_full_page+0x0/0x32c) from [<c00732bc>] (read_pages+0xb8/0x160)
[<c0073204>] (read_pages+0x0/0x160) from [<c00737cc>] (do_page_cache_readahead+0x1f8/0x224)
[<c00735d4>] (do_page_cache_readahead+0x0/0x224) from [<c0073988>] (page_cache_readahead+0x190/0x214)
[<c00737f8>] (page_cache_readahead+0x0/0x214) from [<c006b828>] (do_generic_mapping_read+0x130/0x560)
 r8 = 00000000  r7 = C4D2E580  r6 = C3367DE0  r5 = 00001000
 r4 = 00099000
[<c006b6f8>] (do_generic_mapping_read+0x0/0x560) from [<c006e2cc>] (__generic_file_aio_read+0x1f8/0x21c)
[<c006e0d4>] (__generic_file_aio_read+0x0/0x21c) from [<c006e430>] (generic_file_read+0x94/0xc0)
[<c006e39c>] (generic_file_read+0x0/0xc0) from [<c008c804>] (vfs_read+0xc4/0xfc)
 r9 = C3366000  r8 = C3367F78  r7 = C006E39C  r6 = 45DBA008
 r5 = C4D2E580  r4 = 00099000
[<c008c740>] (vfs_read+0x0/0xfc) from [<c008ca50>] (sys_read+0x48/0x74)
 r8 = C00312F4  r7 = 00000003  r6 = C4D2E580  r5 = 00000000
 r4 = 00000000
[<c008ca08>] (sys_read+0x0/0x74) from [<c0030b60>] (ret_fast_syscall+0x0/0x2c)
 r6 = 00099000  r5 = 001D8AD8  r4 = 00000000
Code: e10f5000 e3852080 e121f002 e593c000 (e59c3000)
 it_rate_ctrl = 1
CPU CurrentStatus is = 0
Encode Debug: Video encoder created
Encode Debug: Contiguous buffer allocated at physical address 0x853c6000
Encode Debug: Contiguous buffer allocated at physical address 0x8526c000
Encode Debug: Contiguous buffer allocated at physical address 0x876ed000
Encode Debug: Contiguous buffer allocated at physical address 0x877b8000
CMEM Error: getPhys: Failed to get physical address of 0xff
CMEM Error: getPhys: Failed to get physical address of 0x102
Encode Debug: Capture buffer allocated at 0xff physical address 0
CMEM Error: getPhys: Failed to get physical address of 0xff
CMEM Error: getPhys: Failed to get physical address of 0x102
Encode Debug: Capture buffer allocated at 0xff physical address 0
videoThrFxn: init complete
Encode Debug: Speech file successfully opened
IPNC-1.0.6 (james@Ubuntu-Desktop) (gcc version 3.4.3 (MontaVista 3.4.3-
Blocksize: 2048
encode_buffer size= 16384
Encode Debug: Input buffer allocated
speechThrFxn: init complete
<1>Unable to handle kernel paging request at virtual address 0080008c
pgd = c0004000
[0080008c] *pgd=00000000
Internal error: Oops: 5 [#2]
Modules linked in: musb_hdrc sbull dm350mmap cmemk
CPU: 0
PC is at drain_array_locked+0x10/0xa8
LR is at cache_reap+0xac/0x248
pc : [<c00748ec>]    lr : [<c0075774>]    Not tainted
sp : c29e1ef8  ip : c29e1f20  fp : c29e1f1c
r10: c032e10c  r9 : c032e11c  r8 : 00000001
r7 : c2906d10  r6 : c29e0000  r5 : c2906ca0  r4 : 00000000
r3 : 00000001  r2 : 00000000  r1 : 00800080  r0 : c2906ca0
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  Segment kernel
Control: 5317F  Table: 84CE0000  DAC: 00000017
Process events/0 (pid: 4, stack limit = 0xc29e01a0)
Stack: (0xc29e1ef8 to 0xc29e2000)
1ee0:                                                       f365b280 00000000
1f00: c2906ca0 c29e0000 c2906d10 00000001 c29e1f54 c29e1f20 c0075774 c00748ec
1f20: c2958400 c0411ec8 c29e1f54 c032e12c c032e128 c29e0000 00000000 c0411ec0
1f40: 00000000 c0411ec8 c29e1fc4 c29e1f58 c005dfe4 c00756d8 c042bf2c c00756c8
1f60: ffffffff ffffffff 00000001 00000000 c0048294 00010000 00000000 c29e0000
1f80: 00000000 c040f540 c0048294 00100100 00200200 00000000 c29e1fc4 c0411ec0
1fa0: c29e0000 c042bf28 c005dde0 fffffffc 00000000 00000000 c29e1ff4 c29e1fc8
1fc0: c0063704 c005ddf0 ffffffff ffffffff 00000000 00000000 00000000 00000000
1fe0: 00000000 00000000 00000000 c29e1ff8 c004e8bc c006362c f7ffbbff fefa7fdf
Backtrace:
[<c00748dc>] (drain_array_locked+0x0/0xa8) from [<c0075774>] (cache_reap+0xac/0x248)
 r8 = 00000001  r7 = C2906D10  r6 = C29E0000  r5 = C2906CA0
 r4 = 00000000
[<c00756c8>] (cache_reap+0x0/0x248) from [<c005dfe4>] (worker_thread+0x204/0x2c0)
[<c005dde0>] (worker_thread+0x0/0x2c0) from [<c0063704>] (kthread+0xe8/0x11c)
[<c006361c>] (kthread+0x0/0x11c) from [<c004e8bc>] (do_exit+0x0/0xda0)
 r8 = 00000000  r7 = 00000000  r6 = 00000000  r5 = 00000000
 r4 = 00000000
Code: e1a0c00d e92dd9f0 e24cb004 e24dd004 (e591300c)
 <6>note: events/0[4] exited with preempt_count 1
BUG: scheduling while atomic: events/0/0x00000001/4
caller is do_exit+0xd3c/0xda0
Unable to handle kernel paging request at virtual address 00800080
pgd = c0004000
[00800080] *pgd=00000000
Internal error: Oops: 5 [#3]
Modules linked in: musb_hdrc sbull dm350mmap cmemk
CPU: 0
PC is at kmem_cache_alloc+0x20/0x54
LR is at mempool_alloc+0x84/0x19c
pc : [<c0073e88>]    lr : [<c006e964>]    Not tainted
sp : c29b7ac8  ip : 00800080  fp : c29b7adc
r10: 00000020  r9 : 00000002  r8 : c29b7b00
r7 : c29b6000  r6 : c47f5dc0  r5 : 40000013  r4 : c29b7af8
r3 : c29067a0  r2 : 40000093  r1 : 00000220  r0 : c29067a0
Flags: nZcv  IRQs off  FIQs on  Mode SVC_32  Segment kernel
Control: 5317F  Table: 80010000  DAC: 00000017
Process pdflush (pid: 80, stack limit = 0xc29b61a0)
Stack: (0xc29b7ac8 to 0xc29b8000)
7ac0:                   c29b7af8 c2b88498 c29b7b44 c29b7ae0 c006e964 c0073e78
7ae0: c23ffe74 00000020 00000000 c29ed7e0 c0063c80 c29b7b0c c29b7b0c c29b7b08
7b00: 00000000 c29ed7e0 c0063c80 c29b7b0c c29b7b0c c29ed7e0 c0063c80 c2b88498
7b20: c2b88498 00000001 c29b6000 c23f1278 00000020 c467ca80 c29b7b5c c29b7b48
7b40: c0183948 c006e8f0 c2b88498 c467ca70 c29b7b6c c29b7b60 c017a048 c0183934
7b60: c29b7ba4 c29b7b70 c017c560 c017a028 00000000 c29b7b80 c0055cc4 00000000
7b80: c467ca70 00000001 c29b6000 00000000 00000001 001bf3c2 c29b7be4 c29b7ba8
7ba0: c017d480 c017c370 c0032288 00000001 c29b7c3c c4d672e0 c29b6000 c29b7c08
7bc0: c467ca70 c29b7c10 c467cb60 c4d672e0 00000001 00000000 c29b7c6c c29b7be8
7be0: c017dbc4 c017d198 c29b6000 0000009a c29b6000 00000001 00000000 c29ed7e0
7c00: c0063c80 c29b7c1c c29b7c1c c29b7c08 00000000 c29ed7e0 c0063c80 c29b7c1c
7c20: c29b7c1c c0073e78 0000000a 00000000 00000000 c29ed7e0 c0063c80 c29b7c54
7c40: c29b7c54 00000000 c4d672e0 00000001 00000001 c4d672e0 c0418a00 c0414248
7c60: c29b7cbc c29b7c70 c017dcd4 c017d958 c02c2890 00000010 00000001 c032eb74
7c80: c29b7cbc c29b7c90 c00924cc c006e8f0 c03262d0 00000000 c4cc4c30 c4cc4c00
7ca0: c4d672e0 c4cc4c00 00000001 00000000 c29b7cdc c29b7cc0 c008f9e4 c017dbfc
7cc0: c4cc4c30 001bf2d0 c03e9c20 c4cc4bd0 c29b7d1c c29b7ce0 c0090ef0 c008f8b4
7ce0: c29b7dd8 003c8906 c29b7f20 c0094cc4 c29b7d1c c29b6000 c0414248 c03e9c20
7d00: 00000004 c0418a00 c29b7f20 c29b7f20 c29b7e2c c29b7d20 c00b4134 c0090c58
7d20: 00000008 c0414a00 00000400 c48406f0 c29b7d8c c29b7d40 c008f17c c0076238
7d40: c48406f0 c4840840 c4840870 c48408a0 00000000 00000000 00000001 ffffffff
7d60: 00000001 c0094e20 00000000 00000000 c467cb34 00000000 c04142e4 00037e5a
7d80: 00000000 00000000 c0092180 c008ef68 00000000 00002600 c27e9800 000007a5
7da0: c29b7dc4 c29b7db0 c00921b8 c0092170 00002600 c27e9800 c29b7dfc c29b7dc8
7dc0: c00e3ee0 c00921b8 c0092180 c008ef68 c04142e4 c48406f0 00000001 00000000
7de0: c03e9c20 000001f4 000001f4 c27e9800 c29b7e3c c29b7e00 c00e45f8 c008ed34
7e00: c00eccfc c29b6000 c0414248 c0414248 00000004 c0418a00 c29b7f20 c04142e4
7e20: c29b7e3c c29b7e30 c0071840 c00b3f20 c29b7eb4 c29b7e40 c00b2be8 c007181c
7e40: 00000000 00000000 c29b7e74 c29b7e58 c0277b08 c02773f0 c29b6000 c29b7e78
7e60: c02bf2a8 ffffb3ad c29b7ebc c29b7e78 c02788f0 c00559d0 00100100 00200200
7e80: ffffb3ad 4b87ad6e c00569c0 c0418a00 c0414248 c29b6000 c467cb34 c29b7f20
7ea0: c0418a7c 00000000 c29b7eec c29b7eb8 c00b33b8 c00b2a50 c0278800 ffffce18
7ec0: c00b3474 c29b6000 c0418a00 c0418a40 c02c2928 c29b7f20 00000000 00000000
7ee0: c29b7f14 c29b7ef0 c00b369c c00b31cc c29b7f14 00000c82 ffffd00c c02bf2a8
7f00: c02c21d0 c29b7f20 c29b7f84 c29b7f18 c00715dc c00b35ec ffffc260 c29b7f28
7f20: 00000000 00000000 c29b7f18 00000400 00000000 00000000 00000000 00000000
7f40: 00000000 00000000 00000005 00000000 00000001 00000000 0000026d 00000000
7f60: c0277b08 c29b6000 00000001 c02c222c c29b7f88 c02bf2a8 c29b7fc4 c29b7f88
7f80: c00724d4 c0071534 c29ed7e0 c0071524 00000000 c29b7f94 c29b7f94 ffffcc24
7fa0: c0277b08 00000000 c29b6000 c042bf68 c0072320 fffffffc c29b7ff4 c29b7fc8
7fc0: c0063704 c0072330 ffffffff ffffffff 00000000 00000000 00000000 00000000
7fe0: 00000000 00000000 00000000 c29b7ff8 c004e8bc c006362c 8dfffb5f beffadbf
Backtrace:
[<c0073e68>] (kmem_cache_alloc+0x0/0x54) from [<c006e964>] (mempool_alloc+0x84/0x19c)
 r5 = C2B88498  r4 = C29B7AF8
[<c006e8e0>] (mempool_alloc+0x0/0x19c) from [<c0183948>] (as_set_request+0x24/0x84)
[<c0183924>] (as_set_request+0x0/0x84) from [<c017a048>] (elv_set_request+0x30/0x3c)
 r5 = C467CA70  r4 = C2B88498
[<c017a018>] (elv_set_request+0x0/0x3c) from [<c017c560>] (get_request+0x200/0x334)
[<c017c360>] (get_request+0x0/0x334) from [<c017d480>] (__make_request+0x2f8/0x514)
[<c017d188>] (__make_request+0x0/0x514) from [<c017dbc4>] (generic_make_request+0x27c/0x2a4)
[<c017d948>] (generic_make_request+0x0/0x2a4) from [<c017dcd4>] (submit_bio+0xe8/0x104)
[<c017dbec>] (submit_bio+0x0/0x104) from [<c008f9e4>] (submit_bh+0x140/0x160)
 r7 = 00000000  r6 = 00000001  r5 = C4CC4C00  r4 = C4D672E0
[<c008f8a4>] (submit_bh+0x0/0x160) from [<c0090ef0>] (__block_write_full_page+0x2a8/0x424)
 r7 = C4CC4BD0  r6 = C03E9C20  r5 = 001BF2D0  r4 = C4CC4C30
[<c0090c48>] (__block_write_full_page+0x0/0x424) from [<c00b4134>] (mpage_writepages+0x224/0x8f4)
[<c00b3f10>] (mpage_writepages+0x0/0x8f4) from [<c0071840>] (do_writepages+0x34/0x50)
[<c007180c>] (do_writepages+0x0/0x50) from [<c00b2be8>] (__writeback_single_inode+0x1a8/0x374)
[<c00b2a40>] (__writeback_single_inode+0x0/0x374) from [<c00b33b8>] (sync_sb_inodes+0x1fc/0x2e8)
[<c00b31bc>] (sync_sb_inodes+0x0/0x2e8) from [<c00b369c>] (writeback_inodes+0xc0/0x13c)
[<c00b35dc>] (writeback_inodes+0x0/0x13c) from [<c00715dc>] (wb_kupdate+0xb8/0x138)
 r8 = C29B7F20  r7 = C02C21D0  r6 = C02BF2A8  r5 = FFFFD00C
 r4 = 00000C82
[<c0071524>] (wb_kupdate+0x0/0x138) from [<c00724d4>] (pdflush+0x1b4/0x2b0)
 r8 = C02BF2A8  r7 = C29B7F88  r6 = C02C222C  r5 = 00000001
 r4 = C29B6000
[<c0072320>] (pdflush+0x0/0x2b0) from [<c0063704>] (kthread+0xe8/0x11c)
 r8 = FFFFFFFC  r7 = C0072320  r6 = C042BF68  r5 = C29B6000
 r4 = 00000000
[<c006361c>] (kthread+0x0/0x11c) from [<c004e8bc>] (do_exit+0x0/0xda0)
 r8 = 00000000  r7 = 00000000  r6 = 00000000  r5 = 00000000
 r4 = 00000000
Code: e10f5000 e3852080 e121f002 e593c000 (e59c3000)
 <1>Unable to handle kernel paging request at virtual address 00800080
pgd = c0004000
[00800080] *pgd=00000000
Internal error: Oops: 5 [#4]
Modules linked in: musb_hdrc sbull dm350mmap cmemk
CPU: 0
PC is at kmem_cache_alloc+0x20/0x54
LR is at dst_alloc+0x48/0xc4
pc : [<c0073e88>]    lr : [<c01d4d4c>]    Not tainted
sp : c02bdcd8  ip : 00800080  fp : c02bdcec
r10: 0346a8c0  r9 : 00000001  r8 : ff46a8c0
r7 : c4672d80  r6 : c02bc000  r5 : 80000013  r4 : 000000c0
r3 : c29064a0  r2 : 80000093  r1 : 00000020  r0 : c29064a0
Flags: Nzcv  IRQs off  FIQs on  Mode SVC_32  Segment kernel
Control: 5317F  Table: 84CE0000  DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc02bc1a0)
Stack: (0xc02bdcd8 to 0xc02be000)
dcc0:                                                       000000c0 c02dd738
dce0: c02bdd04 c02bdcf0 c01d4d4c c0073e78 000000c0 c02bdd90 c02bde0c c02bdd08
dd00: c01e4b08 c01d4d14 c295b800 c02bdd3c c02bdd38 c0035d84 48ced1ca 00000001
dd20: 000000e3 14000000 00000000 000000c0 00000000 c2a7de00 00000000 6a46a8c0
dd40: ff46a8c0 00000000 00000000 00000002 ff46a8c0 0346a8c0 00000000 00000000
dd60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dd80: 00000000 00000000 00000000 00000000 00000000 00000002 ff46a8c0 0346a8c0
dda0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ddc0: 00000000 00000000 00000000 00000000 00000000 00000000 fd030020 c042c740
dde0: c2a7f740 c2a7de00 c295b800 c2a1ac20 c034530c c03436e8 ffffd353 00000040
de00: c02bde44 c02bde10 c01e75cc c01e4074 c295b800 00000000 00000000 c02bde90
de20: c02dd948 c2a7de00 c0343920 c2a7de00 c02bc000 00000008 c02bde64 c02bde48
de40: c01d1194 c01e7394 c295b800 c0343710 00000000 c02bde9c c02bde94 c02bde68
de60: c01d12b4 c01d0fd8 c2a7de00 c0343810 c0343710 c03436e8 ffffd353 c02bf2a8
de80: c0321760 c032b560 c02bdec4 c02bde98 c01d1448 c01d121c 00000000 0000012c
dea0: 00604001 c02bc000 00000103 00000001 c032b5a0 0000000a c02bdeec c02bdec8
dec0: c0051748 c01d13ac c02bc000 00000000 c0032f9c 00000002 c02bc000 c02bdf58
dee0: c02bdf04 c02bdef0 c0051824 c0051704 c02bc000 c02bc000 c02bdf1c c02bdf08
df00: c00519dc c00517fc c0032f9c c02bdf8c c02bdf54 c02bdf20 c00324c0 c00519a0
df20: c00476ac c0047504 00000000 c02bdf8c e1048000 c0032f9c 00000002 c02bc000
df40: 00000001 80029038 c02bdfb4 c02bdf58 c0030780 c00323b0 00000000 0005317f
df60: 0005217f 60000013 c02bc000 60000093 c032e1c4 c034fe24 80029068 41069265
df80: 80029038 c02bdfb4 c02bdfa0 c02bdfa0 c0032f9c c0032fac 60000013 ffffffff
dfa0: c02bc000 c0032f34 c02bdfcc c02bdfb8 c0033004 c0032f44 00000000 c032129c
dfc0: c02bdffc c02bdfd0 c00087d8 c0032fc4 c0008304 00000000 00000000 c03226f8
dfe0: 00000000 00053175 c03226dc c02befd0 00000000 c02be000 8000809c c0008660
Backtrace:
[<c0073e68>] (kmem_cache_alloc+0x0/0x54) from [<c01d4d4c>] (dst_alloc+0x48/0xc4)
 r5 = C02DD738  r4 = 000000C0
[<c01d4d04>] (dst_alloc+0x0/0xc4) from [<c01e4b08>] (ip_route_input+0xaa4/0xc7c)
 r5 = C02BDD90  r4 = 000000C0
[<c01e4064>] (ip_route_input+0x0/0xc7c) from [<c01e75cc>] (ip_rcv+0x248/0x540)
[<c01e7384>] (ip_rcv+0x0/0x540) from [<c01d1194>] (netif_receive_skb+0x1cc/0x244)
 r7 = 00000008  r6 = C02BC000  r5 = C2A7DE00  r4 = C0343920
[<c01d0fc8>] (netif_receive_skb+0x0/0x244) from [<c01d12b4>] (process_backlog+0xa8/0x190)
 r7 = C02BDE9C  r6 = 00000000  r5 = C0343710  r4 = C295B800
[<c01d120c>] (process_backlog+0x0/0x190) from [<c01d1448>] (net_rx_action+0xac/0x1bc)
[<c01d139c>] (net_rx_action+0x0/0x1bc) from [<c0051748>] (___do_softirq+0x54/0xf8)
 r8 = 0000000A  r7 = C032B5A0  r6 = 00000001  r5 = 00000103
 r4 = C02BC000
[<c00516f4>] (___do_softirq+0x0/0xf8) from [<c0051824>] (__do_softirq+0x38/0x58)
[<c00517ec>] (__do_softirq+0x0/0x58) from [<c00519dc>] (irq_exit+0x4c/0x60)
 r5 = C02BC000  r4 = C02BC000
[<c0051990>] (irq_exit+0x0/0x60) from [<c00324c0>] (asm_do_IRQ+0x120/0x138)
 r4 = C02BDF8C
[<c00323a0>] (asm_do_IRQ+0x0/0x138) from [<c0030780>] (__irq_svc+0x40/0x6c)
[<c0032f34>] (default_idle+0x0/0x80) from [<c0033004>] (cpu_idle+0x50/0x88)
 r5 = C0032F34  r4 = C02BC000
[<c0032fb4>] (cpu_idle+0x0/0x88) from [<c00087d8>] (start_kernel+0x188/0x1cc)
 r5 = C032129C  r4 = 00000000
[<c0008650>] (start_kernel+0x0/0x1cc) from [<8000809c>] (0x8000809c)
Code: e10f5000 e3852080 e121f002 e593c000 (e59c3000)
 <0>Kernel panic - not syncing: Aiee, killing interrupt handler!

 

James.

P.S.  I have read the VPFE documentation, twice.

  • My initial thought is that you may need to adjust loadmodules.sh (defined cmem buffer requirements) to meet your new buffer demands.  I see many messages pointing to errors in buffers and cmem.

  • Yeah - many errors and problems with CMEM.  I've still not found a good source of information about what the CMEM requirements are for various VPFE and MJPEG codec components.  It's all still smoke, mirrors, chicken bones and incantations.

    I've had just a little success.  I've managed to get rid of some CMEM errors, but not the kernel oops, yet.

    James.

  • CMEM is more of an application design decision; the codecs and drivers can accommodate a wide range of video resolutions; the application decides which resolution it will use, allocates one or more buffers (double buffer, triple buffer...) of appropriate size; the application also configures codecs for appropriate video frame size and passes buffers to codecs.  In conclusion, CMEM should define enough memory pools of appropriate size (typically large enough for largest video frame supported) within the rage of its defined system memory map (defined by system integrator, 8MB by default in DVSDK)

    With regards to kernel oops, have you tried turning on debugging.  Perhaps this could provide us more useful lof information.

  • Hmm.  How much CMEM is needed for, say, the smoother?  One frame, 2 or 3?  What about the resizer?  I can't seem to find any information that tells what size and number of buffers is required by the various functions provided by the DM355 and the DVSDK.  The CMEM pools allocated in the loadmodules.sh doesn't tell, and there are buffers there, I have no clue what they're for.

    For the dev kit I've got, which is actually from Appro, the insmod cmem.ko line looks like this;

    insmod cmemk.ko phys_start=0x85000000 phys_end=0x88000000 pools=1x2097152,1x1658880,1x1600000,6x829440,2x61440,1x10240,8x4096,1x1843200,2x3686400,1x5767168,1x20185088,2x691200,1x724752

    I know some of this is for sound, and multiple streams of different sizes, but even then, I don't see much that are multiples of the resolution (1280x960, or 640x480).

    1280x960 = 1228800  (3x128800 = 3686400)

    640x480 = 307200

    320x240 = 76800

    So what about the 1x10240 and 8x4096 for example.  What uses them??  And 1x1600000 ?

    If I turn on debugging, the kernel oops dissappears.  This hints at a race condition perhaps.  I'm not sure.

    Anyway, I've been moved off this project, unitl our client comes up with more cash!

    Thanks and regards,

    James.

  • The 2x3686400 is probably used for all video buffers (use largest of all of them to set memory requirements).  Not sure what the rest of them are about; this is typically a system design decision; as you suggested, some of them are probably used by audio.  To know for sure, I would ask Appro why they defined CMEM this way.

    The following wiki article gives you an overview of CMEM: http://wiki.davincidsp.com/index.php?title=CMEM_Overview

  • CMEM is just a contiguous memory allocation driver, so you can make pool sizes of whatever you want, what you need depends heavily on the application at hand, and in particular what your application code needs. This said you could go about figuring out what you need by examining the buffers you are allocating to make sure there are CMEM pools for them, or you could just start taking out CMEM buffers until you see a failure.

    My guess is that the Appro code is allocating way more buffers in CMEM than it actually needs since the DDR2 space is already there on the EVM going unused anyway and this way they would only need a single loadmodules.sh file instead of a different loadmodules.sh file for each type of application and resolution they want to support. Note that the buffer just has to be large enough to fit the frame, it does not have to be the exact size of the frame, so they may just be allocating extra space.

  • For the benefit of the community, I would also like to point out that most software components under DVSDK have documentation included in their corresponding folder (requires DVSDK installation of course).  I wanted to check if this was the case for cmem before posting this and can now confirm there is cmem documentation available in DVSDK.

    The documentation has useful information with regards to how the pools of memory are managed by cmem and buffer alignment requirements.