Linux Kernelを4.6.xにすると次のエラーでSDカード部分で停止して起動できなくなる。 このまま、しばらく置いておくと、エラーを出力し続けてKernel Panicになる。
[ 14.560960] mmc0: Timeout waiting for hardware interrupt.
sdhci.cが大きく変更されているのでその影響であるだろうと推測しているんだけど、このエラーが出る前に次のようにSDカードのパーティションは認識しているのだ。
[ 3.260551] mmc0: new high speed SDHC card at address 59b4
[ 3.266465] mmcblk0: mmc0:59b4 USD 3.73 GiB
[ 3.271914] mmcblk0: p1 p2 p3
つまり、SDカードへのアクセスはできているのだ。 そうなると、もしかしてFile Systemとの問題か?と、思って、rootfsをf2fsでフォーマットしてみたけど、同じエラーになる。
次に注目してみたのが次のエラー内容だ。
[ 14.651746] mmcblk0: error -110 transferring data, sector 333072, nr 136, cmd response 0x900, card status 0xb00
これもext4、f2fsでもほぼ同じエラーを出力する。 同じというのはsectorが同じ位置であること。
よくよく追ってみると次のエラーが出力されていた。
[ 1284.422698] blk_update_request: I/O error, dev mmcblk0, sector 330854
これの大元を追いかけると、block/blk-core.cのblk_update_request()関数にたどり着く。 これがエラーを解くヒントになるかな?