Native speedstepping (8 p-states and 37 degrees idle temp) with Core 2 Duo E8500 using Master Chief's method from the P5K Pro thread.
Scope (_PR) { Name (NCPU, 0x02) Name (CFGD, 0x0020BCF2) Processor (CPU0, 0x01, 0x00000810, 0x06) { OperationRegion (STBL, SystemMemory, 0x7FF7E0D0, 0x0277) Name (TYPE, 0x80000000) Name (HNDL, 0x80000000) Name (TBLD, 0x80) Method (_PDC, 1, NotSerialized) { Store (SizeOf (Arg0), Local0) Store (Subtract (Local0, 0x08), Local1) CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP) Concatenate (Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 }, TEMP, Local2) _OSC (Buffer (Zero) {}, One, Zero, Local2) } Method (_OSC, 4, NotSerialized) { CreateDWordField (Arg3, 0x04, CAP0) Or (And (TYPE, 0x7FFFFFFF), CAP0, TYPE) If (LAnd (LEqual (And (TYPE, 0x09), 0x09), LNot (And ( TBLD, One)))) { Or (TBLD, One, TBLD) Load (STBL, HNDL) } Return (Arg3) } Name (_PSS, Package (0x08) { Package (0x06) { 0x0C5E, 0x40, 0x0A, 0x0A, 0x04922, 0x04922 }, Package (0x06) { 0x0BB5, 0x3B, 0x0A, 0x0A, 0x0920, 0x0920 }, Package (0x06) { 0x0B0F, 0x37, 0x0A, 0x0A, 0x0481F, 0x0481F }, Package (0x06) { 0x0A68, 0x32, 0x0A, 0x0A, 0x081D, 0x081D }, Package (0x06) { 0x09C2, 0x2E, 0x0A, 0x0A, 0x0471C, 0x0471C }, Package (0x06) { 0x091B, 0x2A, 0x0A, 0x0A, 0x071A, 0x071A }, Package (0x06) { 0x0875, 0x26, 0x0A, 0x0A, 0x04618, 0x04618 }, Package (0x06) { 0x07CE, 0x22, 0x0A, 0x0A, 0x0616, 0x0616 } }) Method (_CST, 0, NotSerialized) { If (And (TYPE, 0x18)) { Return (^^CPU1._CST ()) } Else { Return (Package (0x02) { One, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) }, One, 0x9D, 0x03E8 } }) } } } Processor (CPU1, 0x02, 0x00000810, 0x06) { OperationRegion (STBL, SystemMemory, 0x7FF7E350, 0x0277) Name (TYPE, 0x80000000) Name (HNDL, 0x80000000) Name (TBLD, 0x80) Method (_PDC, 1, NotSerialized) { Store (SizeOf (Arg0), Local0) Store (Subtract (Local0, 0x08), Local1) CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP) Concatenate (Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 }, TEMP, Local2) _OSC (Buffer (Zero) {}, One, Zero, Local2) } Method (_OSC, 4, NotSerialized) { CreateDWordField (Arg3, 0x04, CAP1) Or (And (TYPE, 0x7FFFFFFF), CAP1, TYPE) If (LAnd (LEqual (And (TYPE, 0x09), 0x09), LNot (And ( TBLD, One)))) { Or (TBLD, 0x03, TBLD) Load (STBL, HNDL) } Return (Arg3) } Method (_CST, 0, NotSerialized) { Return (Package (0x04) { 0x03, Package (0x04) { ResourceTemplate () { Register (FFixedHW, 0x01, // Bit Width 0x02, // Bit Offset 0x0000000000000000, // Address 0x01, // Access Size ) }, One, One, 0x03E8 }, Package (0x04) { ResourceTemplate () { Register (SystemIO, 0x08, // Bit Width 0x00, // Bit Offset 0x0000000000000814, // Address ,) }, 0x02, One, 0x01F4 }, Package (0x04) { ResourceTemplate () { Register (SystemIO, 0x08, // Bit Width 0x00, // Bit Offset 0x0000000000000815, // Address ,) }, 0x03, 0x11, 0xFA } }) } } }I think I may be missing a Method (_CST, 0, NotSerialized) and Return (\_PR.CPU1._CST()) at the end here, not sure where to put it and got compiling errors trying, so in the end I just removed it!
The memory locations were taken from the full ACPI dump I posted earlier:
http://www.insanelym...p...t&p=1258828And at the end:
Alias (\_PR.CPU0.TYPE, PDC0) Alias (\_PR.CPU1.TYPE, PDC1) Method (PNOT, 0, Serialized) { If (And (PDC0, 0x08)) { Notify (\_PR.CPU0, 0x80) If (And (PDC0, 0x18)) { Sleep (0x64) Notify (\_PR.CPU0, 0x81) } } If (MPEN) { If (And (PDC1, 0x08)) { Notify (\_PR.CPU1, 0x80) If (And (PDC1, 0x18)) { Sleep (0x64) Notify (\_PR.CPU1, 0x81) } } } }}Here's the whole DSDT, it has most of the modifications and fixes (EC, SBUS, FWHD, many devices removed and renamed) from Master Chief's P5K Pro DSDT thread.
If you're going to use this DSDT on a system with PS2 keyboard and/or mouse, you'll have to add those devices back in!
[attachment removed, see link at the bottom]
See here for more info (and DSDT with older Speedstepping code)
http://www.insanelym...p...1631&st=454http://www.insanelym...p...88292&st=10/EDIT..lol
Help, what have I done!!
Unlike my previous method, this is not working right.. VoodooMonitor shows all 8 p-states, shows the CPU running at the lowest and jumping to the highest on load - voltage never changes though! And in MSRTools it just keeps jumping back and forth between 3.09 and 3.17GHz.
And what's with the Multipliers in MSRTools...??
MSR_Voodoo.png 65.47KB
77 downloadsOn the flipside, enabling manual throttle in VoodooMonitor registers in MSRTools and when throttling a 1084p video I had running started breaking up, so at least throttle is 100% working.
/EDIT....*cries*
Went back to my previous method and it's doing exactly the same, it was never working!
Then I tried ripping out everything - Manual throttling still worked, VoodooMonitor still showed 8 P-states and CPU ran at full speed.
I also tried completely removing the P-States, and only adding the four P-States from my ACPI dump. Same result, VoodooMonitor shows the same 8 P-states regardless.
/EDIT 01/11 - fixed using Master Chief's latest CPU scope (edited for 2 cores) and PNOT. DSDT attached here:
http://www.insanelym...p;#entry1299409