- 积分
- 3424
- 最后登录
- 2016-1-20
- 精华
- 0
- 阅读权限
- 70
- 主题
- 111
- UID
- 984013
- 帖子
- 7884
- PB币
- 28167
- 威望
- 45
- 贡献
- 0
- 技术
- 2147
- 活跃
- 1597
打酱油归来
- UID
- 984013
- 帖子
- 7884
- PB币
- 28167
- 贡献
- 0
- 技术
- 2147
- 活跃
- 1597
|
本帖最后由 lisai9093 于 2013-12-22 11:23 编辑
问题描述:BIOS 关闭Optimus 后引起CPU Turbo 变频不正常,尤其是睡眠后问题概率大。SSDT 调用_OFF 关闭的话会大大延迟开机和唤醒时间,比如开机从20几圈直接飙到100圈+。。。CPU 功率也大大高于Intel 规范的最高17W。变频正常时功率一般在5W-10W 之间,不正常时在17W-20W,甚至更高。
貌似出现这个问题的机器不是很多,而且主要是联想。Google 搜了半天也只发现一个帖子。。。我开始还以为SSDT 的问题,走了不少弯路。。。
解决方法:核心就是搞清为什么会有延迟。贴上SSDT 下_OFF 的代码
- Method (_OFF, 0, Serialized)
- {
- Store (VGAR, VGAB)
- Store (One, LNKD)
- While (LNotEqual (LNKS, Zero))
- {
- Sleep (One)
- }
- Store (Zero, GO50)
- Store (Zero, GO54)
- Store (Zero, ^^^LPCB.EC0.NVPR)
- Return (Zero)
- }
复制代码 唯一有可能延迟的就是那个while 循环,sleep 应该只是一个暂停函数。简单说就是等待LNKD 的值从1变成0。根据我的测试,在Optimus 开启的情况下,直接删除循环会导致无法唤醒。所以BIOS 关闭Optimus,同时删除这个while 循环,变成如下:
- Method (_OFF, 0, Serialized)
- {
- Store (VGAR, VGAB)
- Store (One, LNKD)
- Store (Zero, GO50)
- Store (Zero, GO54)
- Store (Zero, ^^^LPCB.EC0.NVPR)
- Return (Zero)
- }
复制代码 问题到此解决。变频正常,续航正常,甚至跑分都比之前变频正常时还要高30% 左右,功率从最低5W 降到2W 多,算是意外收获了吧。
下面是一些截图,和我修改后的DSDT 供参考:
dsdt.aml.zip
(18.78 KB, 下载次数: 88)
下面再介绍一种更高级,理论上更好的方法关闭Optimus。
Reference: http://www.insanelymac.com/forum ... us-on-xps-15-l521x/
通过观察DSDT 和SSDT 可以发现,一般关闭Optimus 需要通过_PS3 -> _OFF,即_PS3 method 执行_OFF method 和一些其它善后工作,所以调用_PS3 应该会更安全。已经有人反应直接调用_OFF 会导致变频等问题。更进一步会发现,_PS3 其实是无法调用的,因为_PS3 含有一个条件语句:
- Method (_PS3, 0, NotSerialized)
- {
- If (LEqual (OMPR, 0x03))
- {...
复制代码 意思是OMPR 必须为0x03 才能执行下面的代码,可是默认OMPR 是0x02,所以必须手动修改OMPR,或者还有更好的方法?根据上面的链接,作者发现SSDT 里只有_DSM 是可以修改OMPR 值的。也就是说OEM 厂商默认通过_DSM 关闭Optimus。这也是目前发现最安全,最贴近原厂的方法。调用方法如下:- \_SB.PCI0.PEG0.PEGP._DSM (Buffer (0x10)
- {
- /* 0000 */ 0xF8, 0xD8, 0x86, 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
- /* 0008 */ 0xA7, 0x2B, 0x60, 0x42, 0xA6, 0xB5, 0xBE, 0xE0
- }, 0x0100, 0x1A, Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x03
- })
- \_SB.PCI0.PEG0.PEGP._PS3 ()
复制代码 其中_DSM 需要有4个参数,具体参数是根据SSDT 里的源代码得出,我查过我的,和作者一样。所以不同机器应该可以通用。但是之前所说的_OFF 里的循环依旧必须删除,尚不知有什么更好的方法。以后继续爬文,有解决方法了第一时间发到这个帖子来。
|
-
6
查看全部评分
-
|