[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: panic in /sbin/fdisk
濱嶋です。
Tue, 19 Nov 2002 11:34:49 +0900 に
Takao Shinohara <shin@sm.sony.co.jp> さんが書かれた
<10211190234.AA20313@lachesis.sm.sony.co.jp> を引用しています
> HAMAJIMA Katsuomi/濱嶋克臣<hamajima@nagoya.ydc.co.jp> writes:
>> L-Routerにハードディスクを接続して使っていますが、/etc/dailyが走ると必
>> ずpanicするので調べたら、/sbin/fdiskを実行すると確実にpanicすることが
>> 分かりました。
>>
>> # /sbin/fdisk
>> trap: address error (store) in kernel mode
>> status=0xf803, cause=0x14, epc=0x8013ce9c, vaddr=0xc3770a12
>> curproc == NULL ksp=0xc410da60
>> Stopped at 0x8013ce9c: sw v0,0(s1)
>
> カーネル内部では、address errorはalignされていないアドレスにアクセスした
> ときに発生します。vaddr=0xc3770a12で、命令がswなので、正にこれが起きたこ
> とを示しています。
なるほど、勉強になります。
> 問題の原因は、wd(4)がバッファのアドレスがalignされているかどうか全く気に
> せずにbus_space_read_multi_4()を使ってPIOしている部分にあると思います。
>
> 当座の回避策としては、dev/pci/pciide.cのacer_chip_map()の中で、以下のよ
> うに32bit PIOを有効にしている部分を書き換えて、16bit PIOしかしないように
> すればよかったと思います。
>
> sc->sc_wdcdev.cap = WDC_CAPABILITY_DATA16 | WDC_CAPABILITY_DATA32 |
> WDC_CAPABILITY_MODE;
WDC_CAPABILITY_DATA32 を削って
sc->sc_wdcdev.cap = WDC_CAPABILITY_DATA16 | WDC_CAPABILITY_MODE;
にしたら、fdiskを実行してもpanicしなくなりました。これで安心して
/etc/dailyを実行できます。ありがとうございました。