こんばんは。 CASIO の cassiopeia FIVA (206VL) を 5.4-RELEASE から 6.1-BETA4 に上げたら hibernation (suspend to disk, S4BIOS) ができなくなりました。 検索したところ、6.0-RELEASE でもだめという話も見つかったので、 RELENG_5_BP から RELENG_6_0_RELEASE までを試して回ったところ、
$FreeBSD: src/sys/dev/pci/pci.c,v 1.269 2004/12/02 08:07:12 njl Exp $ $FreeBSD: src/sys/dev/pci/pci.c,v 1.298 2005/09/21 19:47:00 imp Exp $ $FreeBSD: src/sys/dev/pci/pci.c,v 1.292.2.3 2005/09/27 05:57:47 imp Exp $ これらの影響であることが分かりました。結論としては、 6.0-RELEASE 以降では、/boot/loader.conf か /etc/sysctl.confに hw.pci.do_power_resume="0" と書くと hibernation ができるようになりました。 S4BIOS ができる機種は非常に珍しいのではないかと思うのですが、 kernel が BIOS に制御を移す前に HDD か ata0 の電源を切ってし まい、BIOS が HDD に書き込めなくなり freeze するということな のではないかと(本体を眺めている感じでは)思います。 「5.2.1 以降でまだ本家に取り込まれていない、いわさきさんの patch」として、fiva 使いの人々の頁に紹介されている、apm.c の patch は、有り/無し試してみましたが、無くても動いているように見えます。 apm.c の いわさきさん patch が元々どういう問題を解決していたのかを 実は知らないので、FreeBSD の acpi code が進歩していらなくなったのか どうかは分からないのですが…。 いま試している様子をいちおうまとめておきます(有無の有用性を 自分で検証していない物がいっぱいですが)。 kernel config: options PSM_HOOKRESUME options PSM_RESETAFTERSUSPEND options CPU_ENABLE_LONGRUN loader.conf: hint.cbb.0.irq="11" hint.cbb.1.irq="11" hw.acpi.pci.link.0.10.0.irq="11" hw.acpi.pci.link.0.10.1.irq="11" snd_t4dwave_load="YES" /etc/sysctl.conf: hw.pci.do_power_resume="0" hw.pci.do_power_nodriver="1" hw.acpi.reset_video=0 hw.acpi.lid_switch_state=S4 hw.acpi.standby_state=S4 hw.acpi.suspend_state=S4 hw.acpi.power_button_state=S4 hw.acpi.sleep_button_state=S4 hw.acpi.thermal.min_runtime=300 hw.acpi.battery.info_expire=30 先人に従い loader.conf でしつこく cbb の irq を 11 にしようと している努力の後がありますが、実際には irq 4 と 5 が割り当て られてしまいます。最近の書き方はどうするんでしたっけ…。 試しに PCcard modem と compact flash card を挿して見たところ、 irq storm が起こりますが、driver/kernel 側で抑止してくれ、 結果として modem も flash も使用可能でした。 というわけで fiva をまだお使いの方へ FYI です。 P.S. 冒頭では 5.4を…と書いていますが、実際には今まで 5.0-DP1 を 使っていて、5.4 は hibernation を試すためにいれただけなので、 いろんな物がかなり新鮮です。usb memory を2回以上抜き差ししても freeze しないとか、usb multi card reader が2番目以降の device も認識するとか…。 -- Hiroharu Tamaru
