Contribute
Register

[SOLVED] i7 2600 has only x16/x34 (Dell XPS 8300)

Status
Not open for further replies.
Joined
Sep 26, 2011
Messages
6
Motherboard
Dell XPS 8300
CPU
Intel Core i7 2400
Graphics
ATI Radeon HDsomething (dead)
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
I've got a i7 2600 in a Dell XPS 8300, which has been affected by a x16 lock on 10.7.4 (MacPro 3,1 definition).

First I migrated off NullCPU to the new AppleIntelCPU + stock SSDT in MultiBeast. At that step the system booted just fine but I was still locked at x16 (confirmed by MSRDumper), unless I put the system to sleep and wake up, after which I would have states 16 32 34 36 37 38. Unfortunately sleep mode kills my Ethernet so that's not even a workaround. I tried GenerateStates to no avail.

I then disabled SpeedStep in the BIOS, and after boot (but no sleep) I now have states 16 and 34 reached.

I'm not currently using UserDSDT but reading threads I extracted the original DSDT and took a peek. Some threads mentioned differences between MSI and Gigabyte boards in the _PR scope. Here it is extracted via DSDT Editor:

Code:
    Scope (_PR)
    {
        OperationRegion (SSDT, SystemMemory, 0x00000000, 0x0001)
        OperationRegion (CSDT, SystemMemory, 0xCF5DED98, 0x00E4)
        Name (NCST, 0x02)
        Name (NPSS, 0x00)
        Name (HNDL, 0x80000000)
        Name (CHDL, 0x80000000)
        Name (TNLP, 0x0008)
        Name (CINT, Zero)
        Name (PDCV, 0xFFFFFFFF)
        Name (APSS, Package (0x10)
        {
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }, 
            Package (0x06)
            {
                0xFFFF, 
                0x0FFFFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF, 
                0xFFFF
            }
        })
        // ... Some more non-package definitions which I thought was not relevant

EDIT: apparently it looks like so when SpeedStep is disabled, extracting it drom DSDT Editor with SpeedStep enabled gives the same result as with ioreq/perl.

I found that weird so I extracted the DSDT with the following ioreq/perl trick:

Code:
sudo perl -e 'open(CMD, "ioreg -lw0 \| grep DSDT|") or die; while(<CMD>) { chomp; if($_ =~ /\"DSDT\.?\d?\"=<([^>]*)>/) { $buff = $1; open(PIP, "|xxd -r -p > ~/Desktop/dsdt.aml") or die; print PIP "$1"; } }'

Code:
    Scope (_PR)
    {
        OperationRegion (SSDT, SystemMemory, 0xCF5E5898, 0x06F4)
        OperationRegion (CSDT, SystemMemory, 0xCF5DED98, 0x00E4)
        Name (NCST, 0x02)
        Name (NPSS, 0x0B)
        Name (HNDL, 0x80000000)
        Name (CHDL, 0x80000000)
        Name (TNLP, 0x0008)
        Name (CINT, Zero)
        Name (PDCV, 0xFFFFFFFF)
        Name (APSS, Package (0x0B)
        {
            Package (0x06)
            {
                0x0D49, 
                0x00017318, 
                0x000A, 
                0x000A, 
                0x2600, 
                0x2600
            }, 
            Package (0x06)
            {
                0x0D48, 
                0x00017318, 
                0x000A, 
                0x000A, 
                0x2200, 
                0x2200
            }, 
            Package (0x06)
            {
                0x0C80, 
                0x000153D8, 
                0x000A, 
                0x000A, 
                0x2000, 
                0x2000
            }, 
            Package (0x06)
            {
                0x0BB8, 
                0x00013880, 
                0x000A, 
                0x000A, 
                0x1E00, 
                0x1E00
            }, 
            Package (0x06)
            {
                0x0AF0, 
                0x00011D28, 
                0x000A, 
                0x000A, 
                0x1C00, 
                0x1C00
            }, 
            Package (0x06)
            {
                0x0A28, 
                0x000101D0, 
                0x000A, 
                0x000A, 
                0x1A00, 
                0x1A00
            }, 
            Package (0x06)
            {
                0x0960, 
                0x0000EA60, 
                0x000A, 
                0x000A, 
                0x1800, 
                0x1800
            }, 
            Package (0x06)
            {
                0x0898, 
                0x0000D2F0, 
                0x000A, 
                0x000A, 
                0x1600, 
                0x1600
            }, 
            Package (0x06)
            {
                0x07D0, 
                0x0000BB80, 
                0x000A, 
                0x000A, 
                0x1400, 
                0x1400
            }, 
            Package (0x06)
            {
                0x0708, 
                0x0000A410, 
                0x000A, 
                0x000A, 
                0x1200, 
                0x1200
            }, 
            Package (0x06)
            {
                0x0640, 
                0x00008CA0, 
                0x000A, 
                0x000A, 
                0x1000, 
                0x1000
            }
        })
        // .... Again, some maybe not-relevant stuff

Looks better. And here is the SSDT dumped by this ioreq/perl:

Code:
sudo perl -e 'open(CMD, "ioreg -lw0 \| grep SSDT|") or die; while(<CMD>) { chomp; if($_ =~ /\"SSDT\.?\d?\"=<([^>]*)>/) { $buff = $1; open(PIP, "|xxd -r -p > ~/Desktop/ssdt.aml") or die; print PIP "$1"; } }'

Code:
DefinitionBlock ("ssdt.aml", "SSDT", 1, "AMICPU", "PROC", 0x00000001)
{
    External (\_PR_.OSC_, IntObj)
    External (\_PR_.PDC_, MethodObj)    // 1 Arguments
    Scope (\_PR)
    {
        Processor (P000, 0x01, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P001, 0x02, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P002, 0x03, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P003, 0x04, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P004, 0x05, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P005, 0x06, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P006, 0x07, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
        Processor (P007, 0x08, 0x00000410, 0x06)
        {
            Method (_PDC, 1, NotSerialized)
            {
                \_PR.PDC (Arg0)
            }
            Method (_OSC, 4, NotSerialized)
            {
                Return (\_PR.OSC)
                Arg0
                Arg1
                Arg2
                Arg3
            }
        }
    }
}

This looks very much like this Asus vs MSI difference: viewtopic.php?p=379002#p379002

What can I do to make it work?
 
Re: i7 2600 has only x16/x34 (Dell XPS 8300)

The idea is to copy the CPU info from the SSDT into the DSDT. I did try but did not work for me. viewtopic.php?f=295&t=62125. Good luck and let us know.
 
Re: i7 2600 has only x16/x34 (Dell XPS 8300)

I now have some form of scaling working again.

What I did:

* extracted the real DSDT and SSDT with

Code:
sudo perl -e 'open(CMD, "ioreg -lw0 \| grep DSDT|") or die; while(<CMD>) { chomp; if($_ =~ /\"DSDT\.?\d?\"=<([^>]*)>/) { $buff = $1; open(PIP, "|xxd -r -p > ~/Desktop/dsdt.aml") or die; print PIP "$1"; } }'

Code:
sudo perl -e 'open(CMD, "ioreg -lw0 \| grep SSDT|") or die; while(<CMD>) { chomp; if($_ =~ /\"SSDT\.?\d?\"=<([^>]*)>/) { $buff = $1; open(PIP, "|xxd -r -p > ~/Desktop/ssdt.aml") or die; print PIP "$1"; } }'

* ran compile on the stock DSDT to fix errors, saved to /Extra and booted on it to check it was OK

* injected content of SSDT _PR scope into DSDT _PR scope using xxxmacmanxxx method (not quite sure it's necessary but it will make it more robust)

* added the missing states to the DSDT as suggested by H8TR (I took inspiration on his DSDT)

* compiled modified DSDT, saved to /Extra and rebooted

* tried various system identifiers, which gave me different results with MSRDumper.kext:

- MacPro3,1 initially gave me two states only (16 and 37) then 16 to 20 and 35 to 37
- MacPro 5,1 gave me a bit more: 16 + 34 to 37 (watch out I had to move AppleTyMCEDriver.kext away from /S/L/E to be able to boot)
- iMac 12,1 gave me even more
- MacMini5,1 gave me quite a bunch too, but apparently not the same (e.g 27 did not show up previously)

So for now I'm back at MacPro3,1

Performance is still not quite top notch, e.g entering/exiting Mission Control is slightly jerky (it was silk smooth on 10.7.3 and is after sleep/wake on 10.7.4), but it's better. Maybe it's not linked to CPU scaling tough.

I attached my DSDT if anyone wants to look at it.
 

Attachments

  • DSDT.aml
    25.1 KB · Views: 244
Re: i7 2600 has only x16/x34 (Dell XPS 8300)

Performance is still not quite top notch, e.g entering/exiting Mission Control is slightly jerky (it was silk smooth on 10.7.3 and is after sleep/wake on 10.7.4), but it's better. Maybe it's not linked to CPU scaling tough.

It turns out the jittering is a sync issue of sorts with the monitors. Geekbench reports the same performance whether MC stutters or not, and unplugging a monitor fixes it. Replug and it's still OK.

PS: network issue is linked to the DHCP port UDP 68 not being released correctly, but DHCP IPv6 and static IPv4 still work just fine after wake.

BTW I'm back on MacPro5,1
 
Status
Not open for further replies.
Back
Top