dsdt,ssdt 错误修改
①错误提示:
2085
Warning
ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits)
所在代码: CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
修改方法:将 CreateDWordField 修改为 CreateQWordField
②错误提示
3111
Warning
Result is not used, possible operator timeout will be missed
所在代码:Acquire (MUT0, 0x0FFF)
修改方法:将 0x0FFF 改为 0xFFFF
提醒:错误提示 Possible operator timeout is ignored,也这样修改。
③错误提示:
4754
Remark
Use of compiler reserved name (_T_0)
所在代码: Name (_T_0, Zero)
修改方法:将_T 前边的短横删除,或者改为 T0_0,当然,如果后边是其他数 2,3 等
等,那么相应改为 T2_2,T3_3 即可
提醒:这种错误要注意,一般仅仅提示 Name 行所在的此种错误但 是这个代码段中很
多这样的错误,所以修改这种错误的时候,修改完 Name 行之后,这个代码段中的下
边的所有此类错误要全部修改,然后再根据提示修改下一个 代码段,否则你会吃惊的
发现突然怎么出现这么多错误。这样比较简便而已。修改完之后,重新编译一下看看
还有没有。
④错误提示:
10035
Warning
Not all control paths return a value (WQAA)
所在代码:Method (WQAA, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (T2D0, Local0)
Return (Local0)
}
……
……
If (LEqual (Arg0, 0x21))
{
Store (TDBB, Local0)
修改方法:在此代码段的倒数第二个大括号之后定位指针,然后按回车键,然后输入
Return (Zero),效果如下:
Return (Local0)
}
}
Method (WQAA, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (T2D0, Local0)
Return (Local0)
}
……
……
If (LEqual (Arg0, 0x21))
{
Store (TDBB, Local0)
Return (Local0)
}
Return (Zero)
}
提醒:诸如此种错误提示,都是在代码段的最后一部分像上边修改方法一样,添加这
样一个代码即可解决。
⑤错误提示:
11624
Error
_HID suffix must be all hex digits (GH)
所在代码:Name (_HID, "ABCDEFGH")
修改方法:将 GH 改为 01 即可。
⑥错误提示:
17
Error
Name already exists in scope (\TNOT)
所在代码:External (\TNOT)
修改方法:删除此行。
⑦错误提示:
7297
Warning
Result is not used, operator has no effect
所在代码:Add (Local0, 0x02)
修改方法:此处修改为 Add (Local0, 0x02,Local0)即可。
⑧错误提示:
8866
Warning
Not all control paths return a value (_CRS)
8866
Warning
Reserved method must return a value (Buffer required for _CRS)
所在代码:Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
}
}
}
}
修改方法:参考绝情奶牛的方法解决了这种双重错误的问题
前后都添加代码。红色部分为要添加的部分
Method (RES, 0, NotSerialized)
Return (Zero)
Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
{
}
}
Else
{
}
Return (RES)
}
}
}
⑨错误提示:
3588
Warning
ResourceTag larger than Field (Tag: 16 bits, Field: 8 bits)
所 在 代 码 : CreateByteField (BUF0,
IOL0)
修改方法:将 CreateByteField 改为 CreateWordField
\_SB.PCI0.LPCB.N393.LPT1._CRS._Y16._MIN,
⑩错误提示:
3421
Warning
ResourceTag larger than Field (Tag: 64 bits, Field: 32 bits)
所在代码:CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
修改方法:将 CreateDWordField 改为 CreateQWordField。
⑪错误提示:
11875
Warning
Unknown reserved name (_VPC)
所在代码: Name (_VPC, Zero)
修改方法:搜索 VPC,我们看到大部分的 VPC 之前都没有短横。所以删除所有搜索
到的带短横的 VPC 之前的短横。
提醒:看到 VPC,就想到联想电脑,VPC 即 Virtual power control.
附 : 如 果 错 误 是 Unknown reserved name (_CFG), 指 向 Method (_CFG, 0,
NotSerialized),那么删除 CFG 之前的短横即可,因为这个一般只有一个。
⑫错误提示:
Warning
Statement is unreachable
Return (Local1)
Return (Ones)
有两个 Return,第一个 Return 掉了,第二个 Return 不起作用,所以把它删除
13 错 误 提 示 : 关 于 Invalid object type for
reserved name (found BUFFER, requires
Package)的修改
改为:Name (_PLD, Package (1) {Buffer (0x10)
{
/* 0000 */
/* 0008 */
}})
0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x51, 0x0D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
大家一定要注意大括号和小括号的数量,一定不要搞错,否则错误越改越多
四、SSDT 错误修改
SSDT 的提取和降频修改部分见我的另一篇帖子,第一部分提到了已经。这里重点
说一下错误修改。修改的工具和方法和 DSDT 一样,所以我们直接开始。
①错误提示:
warning: ResourceTag larger than Field(Tag:64its,Field:32bits)
146
Remark
Effective AML package length is zero
所在代码: Package (0x00) {},
修改方法:将 Package (0x00) {} 修改成 Package (0xFF) {}
②错误提示:
40
Warning
_REG has no corresponding Operation Region
所在代码:Method (_REG, 2, NotSerialized)
修改方法:删除_REG 之前的短横即可
③错误提示:
220
Error
syntax error, unexpected PARSEOP_PACKAGE
所在代码:Package (0x06)
{
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000
}
Package (0x06)
{
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000,
0x80000000
}
……
……
修改方法:我们看到有很多这样的 Package,那么我们删除标注行之后一直到下一个
NAME 之前的
Package (0x06)
{
}
0x000004B0,
0x00003848,
0x0000000A,
0x0000000A,
0x00000C00,
0x00000C00
提醒:删除之后,出现另一个同样错误,所以一共删除两处
④错误提示:
84
Warning
Reserved method should not return a value (_PDC)
所在代码:Return (Local0)
修改方法:我们追根求源,找到这段代码
Method (_PDC, 1, NotSerialized)
{
}
Store (CPPC, \_PR.CPU0._PPC)
Store (CPDC (Arg0), Local0)
GCAP (Local0)
Return (Local0)
我们发现删除 Method (_PDC, 1, NotSerialized)中 PDC 前边的短横即可轻易解决问题。
提醒:类似的错误提示都这样处理,观察上下文,跟修改语病一样。
修正:此处经过 lihuanzi2007 的指导,我仔查阅了相关修改,发现这样修
改确实不妥,做出以下修正
将 Return (Local0)改为 Return (Zero)
⑤错误提示:
63
Warning
Statement is unreachable
所在代码:0x09
修改方法:追根溯源,代码段:
Method (_PRW, 0, NotSerialized)
{
}
Return (GPRW)
0x09
0x04
我们删除下边两行即可解决问题。
0x09
0x04
⑥错误提示:
67
Error
Object does not exist (_ON_)
所在代码: _ON ()
修改方法:删除此行即可。(错误)
提醒:大部分此类的错误都这样解决。例外在第七条。
修正:此处修改方法有误,应如此修改:
既然不存在这个项,我们就在 SSDT 的开头添加。添加的代码样式:External (_ON_)
我们看一下 SSDT 开头的格式:
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
External (DID8)
External (NXD8)
……
……
那我们这样修改:
DefinitionBlock ("SSDT_7.aml", "SSDT", 1, "OptRef", "OptTabl", 0x00001000)
{
External (_ON_)
External (DID8)
……
⑦错误提示:
156
Error
Object does not exist (\_SB.PCI0.GFX0.HDSM)
所在代码: Return (\_SB.PCI0.GFX0.HDSM (Arg0, Arg1, Arg2, Arg3))
修改方法:删除“.HDSM (Arg0, Arg1, Arg2, Arg3)”