- Joined
- Sep 26, 2011
- Messages
- 6
- Motherboard
- Dell XPS 8300
- CPU
- Intel Core i7 2400
- Graphics
- ATI Radeon HDsomething (dead)
- Mac
- Classic Mac
- Mobile Phone
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:
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:
Looks better. And here is the SSDT dumped by this ioreq/perl:
This looks very much like this Asus vs MSI difference: viewtopic.php?p=379002#p379002
What can I do to make it work?
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?