Contribute
Register

Help with DSDT speedstep: P55M-UD2, Xeon X3440

Status
Not open for further replies.
Joined
Feb 13, 2010
Messages
5
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
Hi, I'm having trouble getting speedstep working via your guide.

Here's my SSDT.aml

Code:
DefinitionBlock ("./SSDT.aml", "SSDT", 1, "INTEL", "PPM RCM ", 0x80000001)
{
    External (\_PR_.CPU7, DeviceObj)
    External (\_PR_.CPU6, DeviceObj)
    External (\_PR_.CPU5, DeviceObj)
    External (\_PR_.CPU4, DeviceObj)
    External (\_PR_.CPU3, DeviceObj)
    External (\_PR_.CPU2, DeviceObj)
    External (\_PR_.CPU1, DeviceObj)
    External (\_PR_.CPU0, DeviceObj)

    Scope (\_PR.CPU0)
    {
        Name (TYPE, 0x00000000)
        Name (PSEN, 0x00000001)
        Name (CSEN, 0x00000001)
        Name (MWOS, 0x00000001)
        Name (TSEN, 0x00000001)
        Method (_PDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, 0x08, CAPA)
            Store (CAPA, TYPE)
            CreateDWordField (Arg0, 0x00, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS0, TEMP, Local2)
            _OSC (Buffer (0x10)
                {
                    /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                    /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2)
        }

        Method (_OSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, 0x04, CAPA)
            Store (CAPA, TYPE)
            CreateDWordField (Arg3, 0x00, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, 0x00, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, Buffer (0x10)
            {
                /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (Arg0, 0x00, EID0)
            CreateDWordField (Arg0, 0x04, EID1)
            CreateDWordField (Arg0, 0x08, EID2)
            CreateDWordField (Arg0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, Index (STS0, 0x00))
                Return (Arg3)
            }

            If (LNotEqual (Arg1, 0x01))
            {
                Store (0x0A, Index (STS0, 0x00))
                Return (Arg3)
            }

            If (And (STS0, 0x01))
            {
                And (CAP0, 0x0BFF, CAP0)
                Return (Arg3)
            }

            And (CAP0, 0x0BFF, CAP0)
            Store (CAP0, TYPE)
            Return (Arg3)
        }

        Method (_PSS, 0, NotSerialized)
        {
            If (PSEN)
            {
                Return (Package (0x0C)
                {
                    Package (0x06)
                    {
                        0x000009E0, 
                        0x00017318, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000014, 
                        0x00000014
                    }, 

                    Package (0x06)
                    {
                        0x000009DF, 
                        0x00017318, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000013, 
                        0x00000013
                    }, 

                    Package (0x06)
                    {
                        0x0000095A, 
                        0x000130B0, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000012, 
                        0x00000012
                    }, 

                    Package (0x06)
                    {
                        0x000008D5, 
                        0x0000F618, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000011, 
                        0x00000011
                    }, 

                    Package (0x06)
                    {
                        0x00000850, 
                        0x0000DEA8, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000010, 
                        0x00000010
                    }, 

                    Package (0x06)
                    {
                        0x000007CB, 
                        0x0000B3B0, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000F, 
                        0x0000000F
                    }, 

                    Package (0x06)
                    {
                        0x00000746, 
                        0x0000A028, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000E, 
                        0x0000000E
                    }, 

                    Package (0x06)
                    {
                        0x000006C1, 
                        0x00007D00, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000D, 
                        0x0000000D
                    }, 

                    Package (0x06)
                    {
                        0x0000063C, 
                        0x000061A8, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000C, 
                        0x0000000C
                    }, 

                    Package (0x06)
                    {
                        0x000005B7, 
                        0x000055F0, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000B, 
                        0x0000000B
                    }, 

                    Package (0x06)
                    {
                        0x00000532, 
                        0x00004268, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000A, 
                        0x0000000A
                    }, 

                    Package (0x06)
                    {
                        0x000004AD, 
                        0x00003A98, 
                        0x0000000A, 
                        0x0000000A, 
                        0x00000009, 
                        0x00000009
                    }
                })
            }

            Return (Zero)
        }

        Method (_PCT, 0, NotSerialized)
        {
            Return (Package (0x02)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x40,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000199, // Address
                        ,)
                }, 

                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x10,               // Bit Width
                        0x00,               // Bit Offset
                        0x0000000000000198, // Address
                        ,)
                }
            })
        }

        Method (_PPC, 0, NotSerialized)
        {
            Return (Zero)
        }

        Method (_PSD, 0, NotSerialized)
        {
            If (And (TYPE, 0x00000820))
            {
                Return (Package (0x01)
                {
                    Package (0x05)
                    {
                        0x05, 
                        0x00, 
                        0x00000000, 
                        0x000000FE, 
                        0x00000008
                    }
                })
            }

            Return (Zero)
        }


And my DSDT.aml:
Code:
DefinitionBlock ("./dsdt.aml", "DSDT", 1, "GBT   ", "GBTUACPI", 0x00001000)
{
    Scope (_PR)
    {
        Processor (CPU0, 0x00, 0x00000410, 0x06) {}
        Processor (CPU1, 0x01, 0x00000410, 0x06) {}
        Processor (CPU2, 0x02, 0x00000410, 0x06) {}
        Processor (CPU3, 0x03, 0x00000410, 0x06) {}
        Processor (CPU4, 0x04, 0x00000410, 0x06) {}
        Processor (CPU5, 0x05, 0x00000410, 0x06) {}
        Processor (CPU6, 0x06, 0x00000410, 0x06) {}
        Processor (CPU7, 0x07, 0x00000410, 0x06) {}
    }
    
    Scope (_PR.CPU0)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (Package (0x0C)
            {
                Package (0x06)
                {
                    0x09E0, 
                    0x00017318, 
                    0x0A, 
                    0x0A, 
                    0x14, 
                    0x14
                }, 

                Package (0x06)
                {
                    0x09DF, 
                    0x00017318, 
                    0x0A, 
                    0x0A, 
                    0x13, 
                    0x13
                }, 

                Package (0x06)
                {
                    0x095A, 
                    0x000130B0, 
                    0x0A, 
                    0x0A, 
                    0x12, 
                    0x12
                }, 

                Package (0x06)
                {
                    0x08D5, 
                    0x0000F618, 
                    0x0A, 
                    0x0A, 
                    0x11, 
                    0x11
                }, 

                Package (0x06)
                {
                    0x0850, 
                    0x0000DEA8, 
                    0x0A, 
                    0x0A, 
                    0x10, 
                    0x10
                }, 

                Package (0x06)
                {
                    0x07CB, 
                    0xB3B0, 
                    0x0A, 
                    0x0A, 
                    0x0F, 
                    0x0F
                }, 

                Package (0x06)
                {
                    0x0746, 
                    0xA028, 
                    0x0A, 
                    0x0A, 
                    0x0E, 
                    0x0E
                }, 

                Package (0x06)
                {
                    0x06C1, 
                    0x7D00, 
                    0x0A, 
                    0x0A, 
                    0x0D, 
                    0x0D
                }, 

                Package (0x06)
                {
                    0x063C, 
                    0x61A8, 
                    0x0A, 
                    0x0A, 
                    0x0C, 
                    0x0C
                }, 

                Package (0x06)
                {
                    0x005B7, 
                    0x55F0, 
                    0x0A, 
                    0x0A, 
                    0x0B, 
                    0x0B
                }, 

                Package (0x06)
                {
                    0x0532, 
                    0x4268, 
                    0x0A, 
                    0x0A, 
                    0x0A, 
                    0x0A
                }, 

                Package (0x06)
                {
                    0x04AD, 
                    0x3A98, 
                    0x0A, 
                    0x0A, 
                    0x09, 
                    0x09
                } 
            })
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (Package (0x05)
            {
                0x05, 
                Zero, 
                Zero, 
                0xFC, 
                0x04
            })
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (Package (0x02)
            {
                One, 
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000000, // Address
                            0x01,               // Access Size
                            )
                    }, 

                    One, 
                    0x9D, 
                    0x03E8
                }
            })
        }
    }

    Scope (_PR.CPU1)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (Package (0x04)
            {
                0x03, 
                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x01,               // Bit Width
                            0x02,               // Bit Offset
                            0x0000000000000000, // Address
                            ,)
                    }, 

                    One, 
                    Zero, 
                    0x03E8
                }, 

                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x08,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000414, // Address
                            ,)
                    }, 

                    0x02, 
                    One, 
                    0x01F4
                }, 

                Package (0x04)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x08,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000415, // Address
                            ,)
                    }, 

                    0x03, 
                    0x55, 
                    0xFA
                }
            })
        }
    }

    Scope (_PR.CPU2)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

    Scope (_PR.CPU3)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

    Scope (_PR.CPU4)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

    Scope (_PR.CPU5)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

    Scope (_PR.CPU6)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }

    Scope (_PR.CPU7)
    {
        Method (_PSS, 0, NotSerialized)
        {
            Return (^^CPU0._PSS ())
        }

        Method (_PSD, 0, NotSerialized)
        {
            Return (^^CPU0._PSD ())
        }

        Method (_CST, 0, NotSerialized)
        {
            Return (^^CPU1._CST ())
        }
    }
    Name (_S0, Package (0x04)
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })

It's showing no change in MSR Tools. Curiously when I had VoodooPStates.kext installed, the processor seemed to be jammed on the slowest P state.


Thanks :)
 
Yeah, it was compiled, thanks. :)


Got it working now. Turns out I was using the wrong DSDT as a basis, and needed to remove NullCPUPowerManagement.kext. I used the latest DSDT from the database and removed the kext - all working now.

Temperature's still 15-20 degrees higher than in windows though, and I'm not sure if it's performing as well as in Logic Studio.
 
Ok, performance in Logic is confirmed to be noticeably worse in i386 mode (was using that for MSR tools to work), not an issue with speedstep.
 
Ok, I've tried without speedstep and i386 seems to work fine. Hmmmm.



Anyone have any pointers? Temp's not going down with it on anyway - it's certainly not stepping as it does under windows.



Thanks :)
 
findbuddha said:
Ok, performance in Logic is confirmed to be noticeably worse in i386 mode (was using that for MSR tools to work), not an issue with speedstep.

Apparently Apple is fixing Logic performance issues in 10.6.3. :clap:

Although it works lightning fast already for me! :D
 
logic seems to work ok for me but i have problems with quick cpu spikes which give me lag. are you running in 64-bit or 32? i am thinking that perhaps speedstep is making my processor not respond as quickly as it should since it might be downclocked when i'm not running too many synths.
 
Without speedstep in DSDT, I can run Logic as my DAW, with audio routed through Mainstage as my speaker active crossovers, both programs set to 32 sample buffer. Only dropouts are when I select a new instrument channel to play with my midi controllers, and they are limited to that instrument channel (and I think that's only when it hasn't been loaded yet that session).

With speedstep in DSDT, I get the same performance with the OS in 64bit mode, but not in 32bit mode. Logic and Mainstage are running in 32bit mode in all cases.
 
Status
Not open for further replies.
Back
Top