[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:04500] Re: suspend-resume error



かねこ@ひたちです。
At 13:17 2/24/98, I wrote:
> At 12:58 2/24/98, Tomoki Yada wrote:
> > 先ず、適当なユーザー(これをaとする)でログイン。
> > サスペンド
> > レジューム
> > Exitして別のユーザー(これをbとする)にログインし直す。
> >
> > これをおこなうとエラーになるらしくなにやら
> > divide error: 0000
> > CPU:   0
> > EIP:   0010:[<0010f67b>]
> > 以下ごちゃごちゃ出てきて、
> > 再び
> >
> > どなたかこの問題の対処法を知っているかたはお教え願います。
>
> CONFIG_APM を y にしてカーネルを作りなおしてください。

リジュームをさせるには CONFIG_APM を y にしておかなければなら
ないんですが,上の手のエラーについていえば,恐らく kernel
の時間関係処理 time.c が吐いていると思います(過去に経験がある)

で,なんでこんなところが吐くかといいますと,PC-AT の内部には
適当な微細な時間を計る機構が用意されていないので,time関数の
ように細かい時間を返すように規定されているものは,タイマなど
を流用しているのですが,Pentium プロセッサにはモデル固有レジ
スタとして単にクロックを数えているカウンタが用意されたので,
こちらのほうが刻みが細かいこともあり現在のカーネルは I586 を
define するとこのカウンタを使おうとします。でもクロック周波
数なんて精度が低いので,それに補正を掛ける処理を行っています。

で,このカウンタは CPU 内部なんで CPU の電源が供給されていな
ければ当然止まっています。サスペンド・リジュームをカーネルの
知らないところで行ってしまうと,そのあいだ問題のカウンタは止
まっているので,カーネルからみるとプロセッサ周波数がなにか桁
外れに遅くなったという現象になって上の補正処理が破綻してしま
う。で,こけてしまう。

サスペント・リジュームだけでなく,Power Down モードで上のカウ
ンタが止まってしまうというバグ持ちのプロセッサ(具体的には K5
と C6) でも,時々これで悩まされる人が出ていました。K5 はカー
ネルに回避(PowerDown 不可にする)が入るようになりましたが,C6
に至っては PowerDown Off の機能もバグっているのでどーしようも
ない。

--
Seiji Kaneko                              seiji@xxxxxxxxxxxxxxxxxxx
-------------------------------- http://plaza25.mbn.or.jp/~efialtes