2011/04/30

[kernel]non-linefetchを探してみるが、よくわからない

kernelをgrepしてみた。

$  grep -r 'non-linefetch' .

バイナリを除くと、
  • arch/arm/mach-ks8695/pci.c
  • arch/arm/mach-integrator/pci_v3.c
  • arch/arm/mm/fault.c
が出てきた。

fault.cには、"non-linefetch"という言葉が3つ出てくる。
このfault.cは、文字列の定義くらいなので、何が理由なのかは分からない。

残りの2ファイルでは、hook_fault_code()を使っているみたいだ。
これの第1引数が、fault.cにある文字列配列の添字と一致しているのだろう。
hook_fault_code(8, ...)とか、hook_fault_code(10, ...)とか。
なんなのかはわからないけど、そういうことだ。

もう1つわからないけど、"non-linefetch"だけでなく"linefetch"という文言もある。
nonだろうとなかろうと、エラー原因になるらしい。
さて、なんなのだろうねぇ。

ARMの本家サイトからの情報を載せておこう。
 6.2.4 Linefetch transfers

ほかにもいくつか。

ARM Fault Status Register Values (FSR register)
どうやら、FSRレジスタの値からエラー文字列に してくれたのが、あの文言のようだ。
MMUがらみってことか。
仮想アドレス空間で実アドレスをたたこうとしているとか、アラインメントがあってないとか?


[PATCH] USB: musb: omap2430: fix kernel panic on reboot
ふむ。そういえばrebootさせようとすると、カーネルパニックが起きていたな。
あれも同じ原因なのか?
 kernel 2.6.38-rc4では修正したよ、ということのようだ。
私が使っているのは、2.6.32だから、可能性はあるな。


0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。