LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: caiheng1984

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

[复制链接]
 楼主| 发表于 2006-3-19 10:29:33 | 显示全部楼层
郁闷,,我重装系统,只做了
1修正DSDT
2mkinitrd --dsdt 到img

而没有重新编译内核,故障依旧,,希望后来者以为戒
回复 支持 反对

使用道具 举报

发表于 2006-3-19 16:43:03 | 显示全部楼层
  1. # ll /boot/dsdt.aml
  2. -rw-r--r--  1 root root 15115 Mar 17 22:12 /boot/dsdt.aml
  3. # mkinitrd --dsdt /boot/initrd-2.6.12-12mdk-dsdt.img 2.6.12-12mdk
复制代码

當然 lilo 要修一下,因為我加的是新的 img ,要用新的 img 開機

我很確定這個方法是沒問題的,有沒有可能是不小心修錯了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-19 21:20:26 | 显示全部楼层
但是lilo我也改了,不过是直接在lilo.conf里写入新生成的img,而且dmesg显示ACPI已经找到DSDT在initrd,

dmesg显示

ACPI: Looking for DSDT in initrd... found (at offset 0x1c3fd).
    ACPI-0294: *** Info: Table [DSDT] replaced by host OS
ACPI: setting ELCR to 0200 (from 0c00)



我再用你的方法试试看,

谢谢garychang的一直支持,,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-19 21:44:23 | 显示全部楼层
我对dsdt.dsl的修改

注释是我加上去的,

原来的dsl编译时报错
1. Method (_WAK, 1, NotSerialized)是个warning
2.UPBI和UPBS是errro 因为它们在随后的代码中出现在if(*)语句中

Method (_WAK, 1, NotSerialized)
    {
        \_GPE._L26 ()
        Store (0x04, \_SB.PCI0.PM.R0B1)
        If (LEqual (Arg0, 0x04))
        {
            Notify (\_SB.PWRB, 0x02)
        }
        Return(Package(0x02){0x00, 0x00}) //这个是我加上的
    }   


Method (UPBI, 0, NotSerialized)
            {
                Store (0x0F50, Index (PBIF, 0x01))
                Store (0x0F50, Index (PBIF, 0x02))
                Store (0x39D0, Index (PBIF, 0x04))
                Store (0x1E, Index (PBIF, 0x05))
                Store (0x14, Index (PBIF, 0x06))
                Store (0x0A, Index (PBIF, 0x07))
                Store (0x0D8E, Index (PBIF, 0x08))
                Store ("Bat0", Index (PBIF, 0x09))
                Store ("   ", Index (PBIF, 0x0A))
                Store ("Lion", Index (PBIF, 0x0B))
                Store (0x00, Index (PBIF, 0x0C))
                Return(0x00)                  //这个是我加上的
            }

            Method (UPBS, 0, NotSerialized)
            {
                Store (0x84, \_SB.PCI0.ISA.BCMD)
                Store (Zero, \_SB.PCI0.ISA.SMIC)
                Store (\_SB.PCI0.ISA.INF, Local0)
                If (LEqual (Local0, 0x00))
                {
                    If (LGreater (BBLO, 0x00))
                    {
                        Store (0x64, Local0)
                        Decrement (BBLO)
                    }
                }

                And (\_SB.PCI0.PM.R098, 0x02, Local1)
                If (LEqual (Local1, 0x02))
                {
                    If (LNot (LLess (Local0, 0x63)))
                    {
                        Store (0x01, Index (PBST, 0x00))
                        Store (0x64, Local0)
                    }
                    Else
                    {
                        Store (0x02, Index (PBST, 0x00))
                    }
                }
                Else
                {
                    If (LNot (LGreater (Local0, 0x03)))
                    {
                        Store (0x05, Index (PBST, 0x00))
                    }
                    Else
                    {
                        Store (0x01, Index (PBST, 0x00))
                    }
                }

                Multiply (Local0, 0x28, Local2)
                Store (0xFFFFFFFF, Index (PBST, 0x01))
                Store (Local2, Index (PBST, 0x02))
                Store (0x39D0, Index (PBST, 0x03))
                Return(0x00)                    //这个是我加上的
            }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-20 19:45:31 | 显示全部楼层
结果:只有重新编译内核,加入自己的dsdt.hex,才可以正常启动

。。。。。。。。。。。
现在也只能这样了
回复 支持 反对

使用道具 举报

发表于 2007-8-18 14:09:13 | 显示全部楼层
我也在修改dsdt,把缺失的Return简单设为0x00总觉得不踏实,不过要搞清asl的确头大。但楼主实验有效,那我也去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-23 12:09:17 | 显示全部楼层
Post by allisfree
我也在修改dsdt,把缺失的Return简单设为0x00总觉得不踏实,不过要搞清asl的确头大。但楼主实验有效,那我也去试试

确实是设为0x00不踏实,但是我看了其他的代码,一般正确的返回都是0x00,当时也试图修改过其他的值,但是还是不行。

-----------
ps:一年多后再看这个帖子,我怎么都忘记了自己还发了这样的帖子,感谢上面garychang的帮助,你如果看到这个帖子,能帮忙看下这里应该返回什么值么?还有一直在用2006,不知道2007是否已经解决这个问题?
回复 支持 反对

使用道具 举报

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

本版积分规则

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