警告: kernel/irq/handle.c - rootfs を変更した後、なぜですか?

警告: kernel/irq/handle.c - rootfs を変更した後、なぜですか?

今日は、initramfsを持つイメージから別のカーネルとrootfsを持つイメージに変更しました。これらのイメージは、Linux 2.6.39で実行されている組み込みシステム(ARM9 SAM9G25)用です。起動中、initramfs には表示されない次の警告が表示されます。

WARNING: at kernel/irq/handle.c:130 handle_irq_event_percpu+0x70/0x198()
irq 12 handler atmci_interrupt+0x0/0x6b0 enabled interrupts
Modules linked in:
Backtrace: 
[<c0024918>] (dump_backtrace+0x0/0x10c) from [<c01f5664>] (dump_stack+0x18/0x1c)
 r6:c005d558 r5:00000009 r4:c028fea8 r3:c02956bc
[<c01f564c>] (dump_stack+0x0/0x1c) from [<c0030f74>] (warn_slowpath_common+0x54/0x6c)
[<c0030f20>] (warn_slowpath_common+0x0/0x6c) from [<c0031030>] (warn_slowpath_fmt+0x38/0x40)
 r8:00000000 r7:00000000 r6:0000000c r5:00000001 r4:c7969f60
r3:00000009
[<c0030ff8>] (warn_slowpath_fmt+0x0/0x40) from [<c005d558>] (handle_irq_event_percpu+0x70/0x198)
 r3:0000000c r2:c025b447
[<c005d4e8>] (handle_irq_event_percpu+0x0/0x198) from [<c005d6b0>] (handle_irq_event+0x30/0x40)
[<c005d680>] (handle_irq_event+0x0/0x40) from [<c005f274>] (handle_level_irq+0xbc/0xe4)
 r4:c02976a8 r3:00020000
[<c005f1b8>] (handle_level_irq+0x0/0xe4) from [<c0021078>] (asm_do_IRQ+0x78/0xa8)
 r4:0000000c r3:c005f1b8
[<c0021000>] (asm_do_IRQ+0x0/0xa8) from [<c0021a74>] (__irq_svc+0x34/0x60)
Exception stack(0xc028ff48 to 0xc028ff90)
ff40:                   00000000 0005317f 0005217f 60000013 c028e000 c02ab1a4
ff60: c03b9480 c0291f0c 20000000 41069265 2001c2a8 c028ff9c 600000d3 c028ff90
ff80: c0022748 c0022754 60000013 ffffffff
 r5:fefff000 r4:ffffffff
[<c0022714>] (default_idle+0x0/0x44) from [<c0022908>] (cpu_idle+0x70/0xc8)
[<c0022898>] (cpu_idle+0x0/0xc8) from [<c01f37f4>] (rest_init+0x60/0x78) r5:c001d5c4 r4:c0290094
[<c01f3794>] (rest_init+0x0/0x78) from [<c00088c0> (start_kernel+0x23c/0x284)
[<c0008684>] (start_kernel+0x0/0x284) from [<20008038>] (0x20008038)
---[ end trace 45f8d0076fc9ced3 ]---

システムがここでクラッシュせず、いつものように起動し、最終的に動作すると言わなければなりません(最終的にディストリビューションであるBusyboxを使用するようになりました)。

私がしたこと:それぞれ約1GBのFAT32パーティションが2つのSDカードを作成しました。 1つ目はブートローダとカーネルで、2つ目はBuildroot 2013.11の助けを借りて生成されたrootfs.tarを抽出したところです。

Linuxのコマンドラインは次のとおりです。

console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait rw

(これがここに属しているかどうかはわかりませんが、最初はmmcblkを初期化できなかったため、rootfsをまったく起動できませんでした。今はうまくrootwaitいきます)。

私の質問は:このエラーがどこで発生するのかを知っている人はいますか?これに関連する便利なスレッドはどこにもありません。起動中に時間が無駄になっているようで、このエラーを取り除きたいと思います。これが私の本当の目標です。開始時間を最小限に抑えることです。

ベストアンサー1

これはカーネルのどこかにあるバグです。これは rootfs/initramfs の変更と直接関係しません。これは、他の変更(同じソース、同じ構成、同じコンパイラを使用していますか?)が原因である可能性があり、基本的なバグを明らかにするいくつかのタイミング問題に関連する可能性があります。

この警告は次のものから来ます。handle_irq_event_percpu割り込みハンドラは次の目的で使用されます。アートメルMMCコントローラ。このコードにはバグがある可能性があります。

トレース以外の結果を観察しなくても、これらの警告はデータの破損や少なくともロックを引き起こす可能性がある重大な問題を示す傾向があります。デバッグは簡単ではありません。かなり古いカーネルであることを考えると、このドライバの最新バージョンを確認し、可能であれば最新のカーネルの使用を検討してください。

おすすめ記事