LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3004|回复: 26

[ACPI相关]关于ACPI服务引起的启动过程中的非正常关机

[复制链接]
发表于 2006-2-28 22:42:25 | 显示全部楼层 |阅读模式
问题:新装MDV2006,到启动acpi服务时,提示"Critical Temperature Reached (17C)"随后即关机.但最后仍需要手动关机.

我的配置:

NoteBook:Aopen 1545
CPU4-M
Ram: DDR266,256+256
Harddiak:Seagate 60G 5400rpm 8MB Cache
GraphicCard:nvidia geforce2 G0 32M
SoundCard:ali 1541

MDV2006 Power Pack

acpi版本0.0.7-6


问题初步解决:

1.关acpi服务.可以解决,但是不能自动关机,以及其他ACPI支持的服务

2.启动时候跳过,弊端同1

3.经过查找资料,发现问题出在 acpi 服务的 thermal.ko模块,将其删除,也可解决,在配置你的桌面中看到了acpi支持的笔记本电池选项,具体是否可用,还在验证.但是仍然不能自动开机和重启.


问题分析:

查找资料看到问题出在acpi服务中关于系统温度的判断,

1. 目前的判断是错误的,即发现当前温度是17C(摄氏度)但是当前的真正温度不仅如此,

2.即使发现是17C,但也不能就因此就提示"Critical Temperature Reached"而关机.

问题推断:

1.acpi服务本身的问题,但是以往装MDK10.1和Mdk 2005 le的时候并没有如此问题.于是换装了acpi的低版本的acpi版本0.0.7-4,问题仍然依旧.

2.系统内核的问题,可能系统内核对acpi的部分不能真实反映笔记本的情况.

3.acpi服务中thermal.ko与系统内核的协调问题.为此我看了thermal.c的源码,发现其中确实是从系统中读取系统温度和一个trip_point的点,并没有具体的某个数字,

这是我一筹莫展,不知道大家有没有遇到这样的问题,是如何解决的?

本来搜索了论坛,可没有发现有相关的部分,或许论坛的搜索功能还不完备?

谢谢了,ACPI提供的服务实在很重要,我将继续研究下去.
发表于 2006-3-2 15:51:05 | 显示全部楼层
似乎用acpi的时候有提示的,目前这个功能不太稳定。我用了一次挂起吧,结果死机了。以后就没有再用,我觉得等更新的版本出来之后再用比较好。楼主也许没必要浪费时间吧,除非你就是做这个的专家,呵呵。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-2 19:56:56 | 显示全部楼层
呵呵,谢谢回复
回复 支持 反对

使用道具 举报

发表于 2006-3-2 23:51:11 | 显示全部楼层
請先用 dmesg 確定你的 dsdt 沒問題
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-3 14:00:06 | 显示全部楼层
Post by garychang
請先用 dmesg 確定你的 dsdt 沒問題

我的dmesg 生成的boot.messages
内容片断:

ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f6950
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1fefa746
ACPI: FADT (v001 ALI    M1533    0x06040000 PTL  0x000f4240) @ 0x1fefeeaf
ACPI: BOOT (v001 PTLTD  $SBFTBL$ 0x06040000  LTP 0x00000001) @ 0x1fefef23
ACPI: SSDT (v001 PTLTD  ACPIPST1 0x06040000  LTP 0x00000001) @ 0x1fefef4b
ACPI: DSDT (v001    ALI    M1533 0x06040000 MSFT 0x0100000d) @ 0x00000000
ACPI: PM-Timer IO Port: 0x8008

Allocating PCI resources starting at 20000000 (gap: 20000000:dffc0000)
Built 1 zonelists
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffd000 (013ff000)
Initializing CPU#0


ACPI: Looking for DSDT in initrd... not found.
ACPI: setting ELCR to 0200 (from 0c00)

最后两句中的looking  for DSDT in initrd... not found

是不是问题所在?

但是前面的ACPI运行过程中已经
ACPI: DSDT (v001    ALI    M1533 0x06040000 MSFT 0x0100000d) @ 0x00000000
读取了ali M1533,但未能识别?

如何解决?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-6 14:48:58 | 显示全部楼层
目前锁定问题为内核的acpi部分
回复 支持 反对

使用道具 举报

发表于 2006-3-6 18:33:16 | 显示全部楼层
應該這樣講,用 dmesg 看 acpi 的部份有沒有錯,有錯當然要修 (沒錯我就不知道了)
不過,還是可以修修看 acpi ,請參考 gentoo wiki ,它有說明大概要如何修 dsdt
修出來的 dsdt.aml 記得放到 /boot 再 mkinitrd --dsdt (不用重編 kernel)

--

通常 laptop 有可能會遇到這種問題
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-7 12:22:30 | 显示全部楼层
最新的进展:应该是dsdt.asl的问题,需要在内黑编译时候加入自己做的dsdt.aml.

但是我发现用acpidump得到的DSDT.aml,用Iasl进行反编译时候

错误提示:

大意:TabelHeader is lager then file input

有谁能够帮我反汇编我的dsdt.aml文件为dsdt.asl么?

我用./iasl -d dsdt.aml dsdt.asl 就出现上述错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-7 15:12:55 | 显示全部楼层
各位:
我把/proc/acpi/下的dsdt

编译为dsdt.dsl

后用./iasl dsdt.dsl

得到如下提示

[root@localhost compiler]# ./iasl dsdt.dsl

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20060217 [Mar  6 2006]
Copyright (C) 2000 - 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a

dsdt.dsl   102:     Method (_WAK, 1, NotSerialized)
Warning  2078 -                ^ Reserved method must return a value (_WAK)

dsdt.dsl   730:                         If (UPBI ())
Error    1058 - Called method returns no value ^

dsdt.dsl   735:                         If (UPBS ())
Error    1058 - Called method returns no value ^

ASL Input:  dsdt.dsl - 3811 lines, 138031 bytes, 1973 keywords
Compilation complete. 2 Errors, 1 Warnings, 0 Remarks, 514 Optimizations

----------------------
请问如何修改dsdt.dsl才能编译通过呢?

我的dsdt.dsl如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-7 22:57:40 | 显示全部楼层
已经解决,稍后总结.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表