DSDT 컴파일 오류 해결방법 6가지
- 쿠커
- 483
- 0
쿠커님의 기기정보
MACIASL 로 확인되는 컴파일오류를 바로잡으면서 얻은 방법들이 다른 분들께도 도움이 될듯해서 작성해봅니다.
원리나 자세한 사용법을 알고자 하시면 KSJ 님의 DSDT 강좌를 보시기 바랍니다.
https://x86.co.kr/index.php?_filter=search&mid=tip&search_keyword=dsdt&search_target=title&document_srl=1022764
저도 강좌를 보고서야 검색하고, 베껴쓸수 있게 되었습니다.
- MACIasl 로 컴파일하면 '에러 발생 줄의 번호, 에러번호, 에러 안내' 의 순서로 나타납니다.
- 설명의 형식은
(1번) 에러번호, 에러안내
DSDT 샘플 <- change(or insert) 수정방법
입니다.
- 마지막 (6번),(7번)은 에러 두개가 동시에 해결됩니다.
-------------------------
(1번) 3128, ResourceTag larger than Field (Size mismatch, Tag: 64 bits, Field: 32 bits)
If (LOr (LEqual (MM64, Zero), LLessEqual (OSYS, 0x07D3)))
{CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN) // <- change CreateDWordField -> CreateQWordField
Store (Zero, MSLN)
}
(2번) 3130, Result is not used, possible operator timeout will be missed
Mutex (MUT0, 0x00)
Method (ENFG, 1, NotSerialized)
{
Acquire (MUT0, 0x0FFF) // <-change 0x0FFF -> 0xFFFF
Store (0x87, INDX)
Store (0x87, INDX)
Store (Arg0, LDN)
}
(3번) 3090, Min/Max/Length/Gran are all zero, but no resource tag
Name (CRS, ResourceTemplate ()
{
IO (Decode16,
0x0000,
0x0000,
0x00,
0x00,
_Y11)
IO (Decode16,
0x0000,
0x0000,
0x00,
0x00,
_Y12)
IO (Decode16,
0x0000,
0x0000,
0x00,
0x00, // <-change 0x00 -> 0x01
)
})
(4번) 3144, Method Local is set but never used (Local0)
If (_OSI ("Windows 2012"))
{
Store (0x07DC, OSTP)
}
}
Xxxxxxxxxxxxxxxx // <- insert And (Local0, Ones, Local0)
}
(5번) 2011, Use of compiler reserved name (_T_0) or (_T_1)
Method (_DSM, 4, Serialized)
{
If (LEqual (Arg0, ToUUID ("a5xxxx8f-8xxx-4xx6-bxxc-bxxxxxxc7xf8")))
{
Name (_T_0, Zero) // <-change (_T_0) -> (T_0)
Store (ToInteger (Arg2), _T_1) // <-change (_T_1) -> (T_1)
If (LEqual (_T_0, Zero)) // <-change (_T_0) -> (T_0)
{
(6번) 3115, Not all control paths return a value (_DSM) [ or (_HID) etc…. ]
(7번) 3107, Reserved method must return a value (Integer/String/Buffer/Package/Reference required for _DSM)
Method (_DSM, 4, Serialized)
{
Name (DRET, Buffer (0x04)
{
0x00
})
If (LEqual (Arg0, ToUUID ("6xxxx5x1-7xx2-xxxx-xxxx-xxxxe0xxxxdf")))
{
If (LEqual (Arg2, Zero))
{
CreateWordField (DRET, Zero, F0SS)
Store (0x02, F0SS)
Return (DRET)
}
If (LEqual (Arg2, One))
{
If (LEqual (^^PEG0.PEGP.LNKV, 0x03))
{
Return (Zero)
}
Return (One)
}
Xxxxxxxxxxxxx // <- insert Return (Zero)
}
}