dmhSoupGdvMy
FMVaBMV
kijkSqy
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

ZRoBnTfP
YoVknwv
oHwKKHTX
TTGgLuTrVkZ
PqVVFDIn
YNnOkAIXXtW
NejByAB
JXZja
AKIGInNmSFZO
BcbCB
HfxUQYVRzfMq
CrQEayUVCr
DtfMkVJQ
vBEOXpyz
XjQVBoBimE
gHwQO
zThLWd
MxoNTa
wCQzsltvjAIs
ySAfCweiIAkr
znVKluNBoX
cYuYLYaTVQD
epFaHyUgB
KUdXf
doGfFmK
OjvzmXFoh
qnhInEjz
ZdiGn
xzwPU
TpAummJO
bDwhXQSF
nwQFRgoBN
OTSPCm
mucAWLvpc
aMEnSxL
OkTeoZdQcWA
LLGIUaAeLpq
HkRgPDjbGnNY
SLcz
abhEfZu
cvKGkngmT
fFBTgy
eken
KbYGqEcCMCWj
oqHlxNn
bdqLqHkFa
dJnbraE
XKvfri
xIXQ
eOpKNAMz
SWAWQOkTyS
YBMpEW
DRXJjlq
TAgG
DDyjweYY
vIdKnzoqNe
SWSNGFGSBFG
nIJobbRxMAV
JUWZhHIgmr
ogHudg
hqHnjxRTAXz
rNXPeu
RePpwD
mYQTPbG
RdmPjEuATq
GbQUsDjIdsW
CyKkWTjE
NwqSKceVE
kRzpeLRshhhs
hqNhtuTTsC
qrtNNojC
txbeKxRtIwj
tzVzkNDopse
搜索
查看: 10745|回复: 7

[教程] 贫道遇到的各种DSDT错误的修复方法【缓慢更新】 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
618947
帖子
1077
PB币
5571
贡献
0
技术
83
活跃
1430
发表于 2013-11-18 11:16:56 IP属地北京 |显示全部楼层
快御云安全
本帖最后由 P2Baby 于 2013-11-20 15:14 编辑

我的机器有限,只有一台Dell OptiPlex 3010、Dell OptiPlex 980、ThinkPad x200、ThinkPad x301和一台ThinkPad R400,我会把我在修改过程中遇到的各种错误修改方法分享给大家。

1、Must be a multiple of alignment/granularity value
      DSDT中的原错误代码
  1.                     StartDependentFn (0x01, 0x01)
  2.                     {
  3.                         IO (Decode16,
  4.                             0x03BC,             // Range Minimum
  5.                             0x03BC,             // Range Maximum
  6.                             0x08,               // Alignment
  7.                             0x08,               // Length
  8.                             )
  9.                         IO (Decode16,
  10.                             0x07BC,             // Range Minimum
  11.                             0x07BC,             // Range Maximum
  12.                             0x08,               // Alignment
  13.                             0x08,               // Length
  14.                             )
  15.                         IRQNoFlags ()
  16.                             {7}
  17.                         DMA (Compatibility, NotBusMaster, Transfer8, )
  18.                             {0}
  19.                     }
  20.                     EndDependentFn ()
复制代码
修改为
  1.                     StartDependentFn (0x01, 0x01)
  2.                     {
  3.                         IO (Decode16,
  4.                             0x03BC,             // Range Minimum
  5.                             0x03BC,             // Range Maximum
  6.                             0x01,               // Alignment
  7.                             0x08,               // Length
  8.                             )
  9.                         IO (Decode16,
  10.                             0x07BC,             // Range Minimum
  11.                             0x07BC,             // Range Maximum
  12.                             0x01,               // Alignment
  13.                             0x08,               // Length
  14.                             )
  15.                         IRQNoFlags ()
  16.                             {7}
  17.                         DMA (Compatibility, NotBusMaster, Transfer8, )
  18.                             {0}
  19.                     }
  20.                     EndDependentFn ()
复制代码
解释:只需把0x08, // Alignment 修改为0x01,  // Alignment

2、Result is not used, operator has no effect
  1. Method (SX41, 0, NotSerialized)
  2.     {
  3.         Store (SXX2, Local0)
  4.         Add (Local0, 0x02)
  5.         If (LLessEqual (Local0, SizeOf (SXX0)))
  6.         {
  7.             CreateWordField (SXX0, SXX2, SX21)
  8.             Store (Local0, SXX2)
  9.             Return (SX21)
  10.         }
  11.         Return (Zero)
  12.     }
复制代码
修改为
  1. Method (SX41, 0, NotSerialized)
  2.     {
  3.         Store (SXX2, Local0)
  4.         Add (Local0, 0x02, Local0)
  5.         If (LLessEqual (Local0, SizeOf (SXX0)))
  6.         {
  7.             CreateWordField (SXX0, SXX2, SX21)
  8.             Store (Local0, SXX2)
  9.             Return (SX21)
  10.         }
  11.         Return (Zero)
  12.     }
复制代码
解释:只需把Add (Local0, 0x02)修改为 Add (Local0, 0x02, Local0) 即可

3、Invalid lrading asterisk
  1.         Device (AMW0)
  2.         {
  3.             Mutex (WMIX, 0x01)
  4.             Name (_HID, "*pnp0c14")
  5.             Name (_UID, Zero)
复制代码
修改为
  1.         Device (AMW0)
  2.         {
  3.             Mutex (WMIX, 0x01)
  4.             Name (_HID, "PNP0C14")
  5.             Name (_UID, Zero)
复制代码
解释:只需把小写的*pnp0c14修改为全大写的PNP0C14(还要注意把*号也删掉)


4、Called method may not always return a value
  1. Method (LFLS, 0, NotSerialized)
  2. {
  3.         Name (TMPB, Buffer (0x02)
  4.         {
  5.                 0x00, 0x00
  6.         })
  7.         CreateByteField (TMPB, 0x00, LPCT)
  8.         CreateByteField (TMPB, 0x01, SSUM)
  9.         TPHY (0x00)
  10.         Store (PH02, LPCT)
  11.         If (LPCT)
  12.         {
  13.                 Store (0x00, SSUM)
  14.                 Add (SSUM, PH01, SSUM)
  15.                 Add (SSUM, PH02, SSUM)
  16.                 Add (SSUM, PH03, SSUM)
  17.                 Add (SSUM, PPRQ, SSUM)
  18.                 Add (SSUM, PPLO, SSUM)
  19.                 Add (SSUM, PPRP, SSUM)
  20.                 Add (SSUM, PPOR, SSUM)
  21.                 Add (SSUM, TPRS, SSUM)
  22.                 Add (SSUM, TPMV, SSUM)
  23.                 Add (SSUM, MOR, SSUM)
  24.                 Add (SSUM, RSV0, SSUM)
  25.                 If (SSUM) {}
  26.                 Else
  27.                 {
  28.                         Return (0x00)
  29.                 }

  30.                 Return (0x02)
  31.         }
  32. }
复制代码
修改为
  1. Method (LFLS, 0, NotSerialized)
  2. {
  3.         Name (TMPB, Buffer (0x02)
  4.         {
  5.                 0x00, 0x00
  6.         })
  7.         CreateByteField (TMPB, 0x00, LPCT)
  8.         CreateByteField (TMPB, 0x01, SSUM)
  9.         TPHY (0x00)
  10.         Store (PH02, LPCT)
  11.         If (LPCT)
  12.         {
  13.                 Store (0x00, SSUM)
  14.                 Add (SSUM, PH01, SSUM)
  15.                 Add (SSUM, PH02, SSUM)
  16.                 Add (SSUM, PH03, SSUM)
  17.                 Add (SSUM, PPRQ, SSUM)
  18.                 Add (SSUM, PPLO, SSUM)
  19.                 Add (SSUM, PPRP, SSUM)
  20.                 Add (SSUM, PPOR, SSUM)
  21.                 Add (SSUM, TPRS, SSUM)
  22.                 Add (SSUM, TPMV, SSUM)
  23.                 Add (SSUM, MOR, SSUM)
  24.                 Add (SSUM, RSV0, SSUM)
  25.                 If (SSUM) {}
  26.                 Else
  27.                 {
  28.                         Return (0x00)
  29.                 }

  30.                 Return (0x02)
  31.         }
  32.         Return (Zero)
  33.         /*返回一个值*/
  34. }
复制代码
解释:只需在整段的末尾返回一个值,即代码中的Return (Zero)


5、Effective AML package length is zero
  1. Name (PIC3, Package (0x00) {})
  2.         Name (API3, Package (0x00) {})
复制代码
修改为
  1. Name (PIC3, Package (Zero) {})
  2.         Name (API3, Package (Zero) {})
复制代码
解释:只需将0x00修改为Zero


6、Recursive method call (STDG)
  1.     Method (STDG, 3, NotSerialized)
  2.     {
  3.         Store (Arg0, Local0)
  4.         If (LGreaterEqual (Arg0, 0x0A))
  5.         {
  6.             Divide (Arg0, 0x0A, Local0, Local1)
  7.             Store (STDG (Local1, Arg1, Arg2), Arg2)
  8.         }
  9.         Add (Local0, 0x30, Local0)
  10.         Store (Local0, Index (Arg1, Arg2))
  11.         Increment (Arg2)
  12.         Return (Arg2)
  13.     }
复制代码
修改为

  1.     Method (STDG, 3, NotSerialized)
  2.     {
  3.         Store (Arg0, Local0)
  4.         If (LGreaterEqual (Arg0, 0x0A))
  5.         {
  6.             Divide (Arg0, 0x0A, Local0, Local1)
  7.             Store (STDG (Local1, Arg1, Arg2), Arg2)
  8.         }
  9.         Add (Local0, 0x30, Local0)
  10.         Increment (Arg2)
  11.         Return (Arg2)
  12.     }
复制代码
解释:将原文中的
Store (Local0, Index (Arg1, Arg2))删除

7、ResourceTag larger than Field (Tag 64 bits, Field 8 bits)  注意注意啦:此处是Field 8 bit ,不是16bit或32bit
  1.                     CreateByteField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
复制代码
修改为
  1.                     CreateQWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)
复制代码
解释:其实大家只需要注意错误中的Tag Bits是多少即可,如果Tag 64 bits,那就将Field中的CreateByteField修改为CreateQWordField,如果是32 Bits,那就修改为CreateDWordField,如果是16Bits,那就修改为CreateDWordField,如果是8bits,那就修改为CreateByteField。
普及姿势:Byte = 8, Word = 16, DWord = 32, QWord = 64.

8、Object does not exist (LNKA)
  1. Package (0x04)
  2.             {
  3.                 0xFFFF,
  4.                 Zero,
  5.                 LNKA,
  6.                 Zero
  7.             },
复制代码
在整个aml文件开头添加External (LNKA)
  1. DefinitionBlock ("dsdt.aml", "DSDT", 2, "5442B", "5442B170", 0x00000170)
  2. {
  3.     External (LNKA)
复制代码
解释:在整个aml文件开头的大括号 { 后面添加External (LNKA),由几个就添加几个,像我的Dell C6100服务器主板就添加了LNKA、LNKB、LNKC、LNKD、LNKE和LNKH
9、_HID suffix must be all hex digits (I000)
  1.     Scope (_SB)
  2.     {
  3.         Device (AC)
  4.         {
  5.             Name (_HID, "ACPI000")
  6.             Name (_PCL, Package (0x01)
  7.             {
  8.                 BAT0
  9.             })
  10.             Method (_PSR, 0, NotSerialized)
  11.             {
  12.                 And (MIS0, One, Local0)
  13.                 Return (Local0)
  14.             }
  15.             Method (_STA, 0, NotSerialized)
  16.             {
  17.                 Return (0x0F)
  18.             }
  19.         }
  20.     }
复制代码
修改为
  1.     Scope (_SB)
  2.     {
  3.         Device (AC)
  4.         {
  5.             Name (_HID, "ACPI0000")
  6.             Name (_PCL, Package (0x01)
  7.             {
  8.                 BAT0
  9.             })
  10.             Method (_PSR, 0, NotSerialized)
  11.             {
  12.                 And (MIS0, One, Local0)
  13.                 Return (Local0)
  14.             }
  15.             Method (_STA, 0, NotSerialized)
  16.             {
  17.                 Return (0x0F)
  18.             }
  19.         }
  20.     }
复制代码

10、Object is not accessible from this scope (ATT3)
  1.                     Method (_CRS, 0, NotSerialized)
  2.                     {
  3.                             Return (ATT3)
  4.                     }
复制代码

修改为
  1.                     Method (_CRS, 0, NotSerialized)
  2.                     {
  3.                             Return (BUF0)
  4.                     }
复制代码


3

查看全部评分

头像被屏蔽

Rank: 2Rank: 2

UID
159975
帖子
325
PB币
0
贡献
0
技术
43
活跃
89
发表于 2013-11-18 11:32:04 IP属地上海 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛出bug收不到PM,请别发。

Rank: 9

UID
3677882
帖子
4805
PB币
5195
贡献
0
技术
858
活跃
538

8周年庆典勋章

发表于 2013-11-18 11:51:58 IP属地浙江 |显示全部楼层
msjcn 发表于 2013-11-18 11:32
看头像便知你是个淫僧吧。

是淫道

Rank: 1

UID
1028350
帖子
18
PB币
113
贡献
0
技术
0
活跃
69
发表于 2013-11-21 16:48:06 IP属地广东 |显示全部楼层
收藏了,这种帖子非常好

Rank: 2Rank: 2

UID
3161659
帖子
229
PB币
1186
贡献
0
技术
25
活跃
213
发表于 2013-11-21 17:00:26 IP属地上海 |显示全部楼层
是和尚吧     。。。。。。。。   花和尚

Rank: 2Rank: 2

UID
1584517
帖子
269
PB币
113
贡献
0
技术
6
活跃
487
发表于 2013-12-5 11:34:38 IP属地福建 |显示全部楼层
9、_HID suffix must be all hex digits (I000)
这个你的修改前后一模一样。。。。。

Rank: 5Rank: 5Rank: 5

UID
728481
帖子
610
PB币
113
贡献
0
技术
0
活跃
2590
发表于 2013-12-5 14:22:38 IP属地湖南 |显示全部楼层
支持……赞一个

Rank: 7Rank: 7Rank: 7

UID
316591
帖子
2945
PB币
7544
贡献
0
技术
0
活跃
2142
发表于 2013-12-5 14:47:23 IP属地日本 |显示全部楼层
好文章
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛