﻿

解决Intel芯片组主板关机后不断电：

症状：当电脑关机或睡眠的时候，显示器关闭，但风扇依旧转，灯依旧亮。只能重启。
这个情况在使用uefi bios引导中出现的概率是1：10传统bios在1：100左右

方法一(简单操作，可解决大部分):
使用 Clover Configurator 打开config.plist 在ACPI项目下增加如下键值：
HaltEnabler               --- set SLP_SMI_EN=0 at early start.
FixShutdown_0004      --- prevent set SLP_SMI_EN=1 at _PTS with Arg0=5 (shutdown)
SuspendOverride       --- extend this fix to Arg0=3,4,5 (also sleep and suspend)
SlpSmiAtWake          --- set SLP_SMI_EN=0 at method _WAK, so at every wake up.


方法二(操作复杂，原生电源管理):
1. 在 Method (_PTS, 1, NotSerialized)之前添加一个OperationRegion (PMRS, SystemIO, 0x0430, 0×13)，如下：

OperationRegion (PMRS, SystemIO, 0×0430, 0×13)
Field (PMRS, ByteAcc, NoLock, Preserve)
{
,   4,
SLPE,   1
}

注意红色的0×0430是依据你的主板而定的，你在dsdt里搜索Processor，找到像下面这样的：
Processor (CPU0, 0×00, 0×00000410, 0×06)
如果是0×00000410, 就直接复制上面的就行了，如果是： Processor (P001, 0×01, 0×00000810, 0×06) {}，就将0×0430改成0×0830。可以大家已经发现规律了. Processor处是0×00000410，就用0×0430; Processor处是0×00000810, 就用0×0830. 同样如果你的dsdt的Processor处是0×00000610，就用0×0630.

2. 在Method (_PTS, 1, NotSerialized) 里将If (LEqual (Arg0, 0×05))修改成如下（没有的话就直接添加在最前面，像下面这个一样）：

Method (_PTS, 1, NotSerialized)
{
//Store (Zero, \_SB.PCI0.LPC.EXPE)    // 如果你的dsdt里Device (LPC)的OperationRegion里EXPE一项，可以去掉此行前面的“//”

If (LEqual (Arg0, 0×05))
{
//Store (0×01, \_SB.PCI0.LPC.EXPE) // 如果你的dsdt里device (lpc)的OperationRegion里expe一项，可以去掉此行前面的“//”

Store (Zero, SLPE) // 此行是关键不能删
Sleep (0×10) // 此行是关键不能删
}

其他原来的代码不动 … …

}

更改完成后在S/L/E和Extra中去掉NullCPUPowerManagement，使用原生的电源管理。

