Hi fassl - think I found a couple of bugs for the dsdt patcher on my dsdt.
The system won't load osx with the patches in.
The CPU Fix is needed, but doesn't look like it turns out like it should:
CPU BeforeCODE
Scope (_PR)
{
Processor (P001, 0x01, 0x00004010, 0x06) {}
Alias (P001, CPU1)
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Alias (P003, CPU3)
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
}
CPU AfterCODE
Scope (_PR)
{
Processor (P001, 0x01, 0x00004010, 0x06) {}
Processor (P002, 0x02, 0x00000000, 0x00) {}
Alias (P002, CPU2)
Processor (P003, 0x03, 0x00000000, 0x00) {}
Processor (P004, 0x04, 0x00000000, 0x00) {}
Alias (P004, CPU4)
}
I changed this to
CODE
Scope (_PR)
{
Processor (_PR.CPU1, 0x01, 0x00004010, 0x06) {}
Processor (_PR.CPU2, 0x02, 0x00000000, 0x00) {}
Processor (_PR.CPU3, 0x03, 0x00000000, 0x00) {}
Processor (_PR.CPU4, 0x04, 0x00000000, 0x00) {}
}
For HPET it looks like the IRQNoFlags is already there under CRS1, but if it is needed under CRS0 then the Memory32Fixed section should be as well?
HPET Before
CODE
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (_UID, Zero)
Name (CRS0, ResourceTemplate ()
{
})
Name (CRS1, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00000000, // Address Length
_Y0B)
IRQNoFlags (_Y0C)
{0}
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (LEqual (NVID, 0x10DE))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Else
{
Return (Zero)
}
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0B._BAS, HPX1)
CreateDWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0B._LEN, HPX2)
CreateWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0C._INT, TIRQ)
If (LEqual (NVID, 0x10DE))
{
Store (Zero, Local0)
If (P2IR)
{
Store (0x02, Local0)
}
ShiftLeft (One, Local0, TIRQ)
Store (SHPB, HPX1)
Store (SHPL, HPX2)
Return (CRS1)
}
Else
{
Return (CRS0)
}
}
OperationRegion (CF29, PCI_Config, 0x74, One)
Field (CF29, ByteAcc, NoLock, Preserve)
{
, 1,
, 1,
P2IR, 1
}
OperationRegion (HPTE, SystemMemory, SHPB, 0x04)
Field (HPTE, ByteAcc, NoLock, Preserve)
{
Offset (0x02),
NVID, 16
}
}
HPET After
CODE
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (_UID, Zero)
Name (CRS0, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
})
Name (CRS1, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0x00000000, // Address Base
0x00000000, // Address Length
_Y0B)
IRQNoFlags (_Y0C)
{0}
IRQNoFlags ()
{8}
})
Method (_STA, 0, NotSerialized)
{
If (LEqual (OSFL (), Zero))
{
If (LEqual (NVID, 0x10DE))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Else
{
Return (Zero)
}
}
Method (_CRS, 0, NotSerialized)
{
CreateDWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0B._BAS, HPX1)
CreateDWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0B._LEN, HPX2)
CreateWordField (CRS1, \_SB.PCI0.SBRG.HPET._Y0C._INT, TIRQ)
If (LEqual (NVID, 0x10DE))
{
Store (Zero, Local0)
If (P2IR)
{
Store (0x02, Local0)
}
ShiftLeft (One, Local0, TIRQ)
Store (SHPB, HPX1)
Store (SHPL, HPX2)
Return (CRS1)
}
Else
{
Return (CRS0)
}
}
OperationRegion (CF29, PCI_Config, 0x74, One)
Field (CF29, ByteAcc, NoLock, Preserve)
{
, 1,
, 1,
P2IR, 1
}
OperationRegion (HPTE, SystemMemory, SHPB, 0x04)
Field (HPTE, ByteAcc, NoLock, Preserve)
{
Offset (0x02),
NVID, 16
}
}
RTC is probably ok, just inexperienced to know for sure.
I'm including the original dat, dsl, and resulting dsdt_fixed.txt
You can catch me on irc in natit.
DiaboliK and I are looking for advice and help on this one. Thanks.