yeehaa, on Sep 30 2009, 12:59 AM, said:
did u try the IRQ fixes? the one's posted by king over there at project?
I would like to call that a "workaround" and not a "fix". Why? Well, let's have a look at the RTC from a real MacPro3,1:
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
IRQNoFlags ()
{8}
})
Method (_CRS, 0, Serialized)
{
If (HPAE)
{
Return (BUF0)
}
Return (BUF1)
}
}
And here's TIMR from the same MacPro3,1:
Device (TIMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x10, // Alignment
0x04, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x10, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
Method (_CRS, 0, Serialized)
{
If (HPAE)
{
Return (BUF0)
}
Return (BUF1)
}
}
Now note the
if (HPAE) {} clause here, which is what makes it fly on a MacPro3,1 However, nobody ever explained, really, why you should remove the IRQ's. Is that because they simply never solved this piece of the puzzle, or am I missing something here?
It is still very early for me, but what was HPAE again? Let's start with that first. Thanks.
p.s. Here's a clue:
OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
Field (RCRB, DWordAcc, Lock, Preserve)
{
Offset (0x1000),
Offset (0x3000),
Offset (0x3404),
HPAS, 2,
, 5,
HPAE, 1,
Offset (0x3418),
, 1,
PATD, 1,
SATD, 1,
SMBD, 1,
HDAD, 1,
A97D, 1,
Offset (0x341A),
RP1D, 1,
RP2D, 1,
RP3D, 1,
RP4D, 1,
RP5D, 1,
RP6D, 1
}
And here's mine:
OperationRegion (RCRB, SystemMemory, 0xFED1F404, 0x04)
Field (RCRB, AnyAcc, NoLock, Preserve)
{
HPAS, 2,
, 5,
HPAE, 1,
Offset (0x04)
}
It's not that big because we don't need the references to the rest. BTW: Do any of these ring a bell? But don't tell me because I know what they are
And here's an example, in this case my HPET from my hack:
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (BUF0, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y09)
})
Method (_STA, 0, NotSerialized)
{
If (LGreaterEqual (OSYS, 0x07D1))
{
If (HPAE)
{
Return (0x0F)
}
}
Else
{
If (HPAE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, NotSerialized)
{
if (HPAE)
{
CreateDWordField (CRS, \_SB.PCI0.LPCB.HPET._Y09._BAS, HPT0)
Multiply (HPAS, 0x1000, Local0)
Add (Local0, 0xFED00000, HPT0)
}
Return (BUF0)
}
}
Making it look even more like a real MacPro3,1 – be it a little more optimized – but more importantly... no stutter for me
oldnapalm, on Sep 30 2009, 01:09 AM, said:
Hey Master Chief, thanks for the great explanation.
You're welcome.
oldnapalm, on Sep 30 2009, 01:09 AM, said:
I followed your steps and got very close results (4 values under PerformanceStateArray after adding _PSS for my CPU and Step2_0), except that after adding _CST from MacPro3,1 temperatures are still high (> 60º C idle). The main difference here is that my SSDT doesn't have PDC0 so I gave a shot in the dark and used 0x80000000.
ASUS uses
TYPE instead of
PDC0 and I think that was why
FormelyKnownAs asked you to read the thread