今晩は、奥村です。

C600のACPIについて困っています。
家庭内LANのサーバーをDELL Latitude C600のMBにしようと頑張っているので
すが、CPUが高温になるまでFanが回らず、結局落ちてしまいます。
hw.acpi.thermal.tz0.*を色々いじったのですが、このマシンでは設定できな
いようです。色々webを探してもhotになるという報告は有っても解決策は見つ
けることは出来ませんでした。

そんな中、ファンをコントロールするプログラムを見つけ使おうと思ったので
すが、奇妙な現象でデッドロックに乗り上げています。それは、直接実行する
とbus wrrorで落ち、gdbからrunすると正常に動くというものです。
落ちたcoreをgdbに食わせると下記の所で落ちています。

-----------------------
 static int d_io(DRegs *regs)
{
    int rc;
    int eax = regs->eax;

 asm("pushl %%eax\n\t" \
      "movl 0(%%eax),%%edx\n\t" \
           "push %%edx\n\t" \
           "movl 4(%%eax),%%ebx\n\t" \
           "movl 8(%%eax),%%ecx\n\t" \
           "movl 12(%%eax),%%edx\n\t" \
           "movl 16(%%eax),%%esi\n\t" \
           "movl 20(%%eax),%%edi\n\t" \
           "popl %%eax\n\t" \
           "out %%al,$0xb2\n\t" \
           "out %%al,$0x84\n\t" \
           "xchgl %%eax,(%%esp)\n\t"
           "movl %%ebx,4(%%eax)\n\t" \
           "movl %%ecx,8(%%eax)\n\t" \
           "movl %%edx,12(%%eax)\n\t" \
           "movl %%esi,16(%%eax)\n\t" \
           "movl %%edi,20(%%eax)\n\t" \
           "popl %%edx\n\t" \
           "movl %%edx,0(%%eax)\n\t" \
           "lahf\n\t" \
           "shrl $8,%%eax\n\t" \
           "andl $1,%%eax\n" \
            : "=a" (rc)
            : "a" (regs)
            : "%ebx", "%ecx", "%edx", "%esi", "%edi", "memory");<<<<

--------------------------------
inline asmの部分で落ちていることが分かりましたが、何処をどう直せば良い
のかわかりません。
gdb上の動作は正常で、温度を見ながらファン回転数をちゃんとコントロール
できています。

示唆を頂けると幸いです。

----
                                    [EMAIL PROTECTED] (奥村暢朗)

メールによる返信