at_ohsawa
2014年9月26日 12時04分
大澤です。
gstreamerを使用してACMによるデコードを繰り返し実行すると、ビデオストリーム
によっては 再起動 や gstreamerのエラー 等の不具合が発生する事を確認しています。
複数の要因があることは確認できているのですが、現在調査中です。
不具合の1つである、音声入出力FIFO(fsi)デバイスドライバのバグを修正する
パッチを作成しました。
このバグによる不具合が発生すると、下記のBacktraceが出力され最終的に
watchdog timedout によって再起動します。
下記のエラーメッセージが出た後に、Armadilloが再起動してしまう方はテスト
して頂けると助かります。
Unable to handle kernel NULL pointer dereference at virtual address 000000a0 pgd = c0004000 [000000a0] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT ARM Modules linked in: CPU: 0 Not tainted (3.4-at9 #1) PC is at fsi_dma_do_work+0xb4/0x270 LR is at fsi_dma_do_work+0x94/0x270 pc : [<c034ed40>] lr : [<c034ed20>] psr: a0000013 sp : ccea1ef8 ip : 00000000 fp : ccea1f54 r10: 00000001 r9 : c100b6c0 r8 : d0b3a114 r7 : cc80d800 r6 : 00000000 r5 : d0ae75d0 r4 : d0b3a154 r3 : 00000000 r2 : 00000000 r1 : 00000001 r0 : c0562dd8 Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 44b9c059 DAC: 00000015 Process kworker/0:1 (pid: 11644, stack limit = 0xccea02e8) Stack: (0xccea1ef8 to 0xccea2000) 1ee0: c000fc1c ccea0000 1f00: 00000001 00000780 d0b3a170 00000001 00000001 d0b3a108 ccea1f8c ccea1f58 1f20: c003f280 c0032758 00000000 c7ba9e40 c08da800 00000000 c08da805 d0b3a154 1f40: 00000009 c056d900 ccea1f8c ccea1f58 c0032798 c034ec98 c003f368 c00335ec 1f60: 00000000 c7ba9e40 ccea0000 c056d900 c7ba9e54 ccea0000 00000009 c056d900 1f80: ccea1fbc ccea1f90 c0033784 c00325ac 00000000 c0e5fef0 c7ba9e40 c00335b0 1fa0: 00000013 00000000 00000000 00000000 ccea1ff4 ccea1fc0 c00375a8 c00335bc 1fc0: c0e5fef0 00000000 c7ba9e40 00000000 ccea1fd0 ccea1fd0 00000000 c0e5fef0 1fe0: c0037514 c0020ed8 00000000 ccea1ff8 c0020ed8 c0037520 bede0fca 00000000 Backtrace: [<c034ec8c>] (fsi_dma_do_work+0x0/0x270) from [<c0032798>] (process_one_work+0x1f8/0x370) [<c00325a0>] (process_one_work+0x0/0x370) from [<c0033784>] (worker_thread+0x1d4/0x2f8) [<c00335b0>] (worker_thread+0x0/0x2f8) from [<c00375a8>] (kthread+0x94/0xa0) [<c0037514>] (kthread+0x0/0xa0) from [<c0020ed8>] (do_exit+0x0/0x75c) r6:c0020ed8 r5:c0037514 r4:c0e5fef0 (....省略) 0d60: c003773c 00000000 ccea0d84 ccea0d78 c03f2d18 c03f22f4 ccea0db4 ccea0d88 0d80: c0020fe0 c03f2ca0 ccea0000 ccea0e02 c003773c 00000000 ccea0db4 ccea0da8 0da0: c001d680 ccea0000 ccea0e34 ccea0db8 c00115c0 c0020ee4 ccerebooted by watchdog timedout.
パッチの適用方法:
対応バージョンは Linuxカーネル v3.4-at9 (2014年9月現在最新版) です。
それより古くても適用可能ですが、動作確認は行っていません。
添付のfix_fsi_resources_locking.patchをダウンロードして、
linuxカーネルのソースコードに適用し、ビルドしてください。
(適用例)
[ATDE ~/]$ cd ~/atmark-dist/linux-3.x [ATDE ~/atmark-dist/linux-3.x]$ patch -p1 < fix_fsi_resources_locking.patch
ファイル | ファイルの説明 |
---|---|
fix_fsi_resources_locking.patch |
at_ohsawa
2014年10月8日 11時51分
大澤です。
前回のパッチでは修正が不十分だったため、spin_lockを取る区間を広げるよう
変更したパッチ (fix_fsi_resources_locking_v2.patch) を作成いたしました。
現在試験中ですが評価完了し次第、製品アップデートでカーネルを
バージョンアップする予定です。