Contribute
Register

SSDT generation script (Ivybridge PM)

Status
Not open for further replies.
Joined
Jan 19, 2013
Messages
271
Motherboard
Mac mini
CPU
i[5/7]
Graphics
HD[3/4]000
Mac
Classic Mac
Mobile Phone
sudo /Users/rachaf/Desktop/ssdtPRGen.sh 3600
i have this result:
...
is 77 watt safe for i7-3720qm mobile cpu that have 45w max TDP?
Max TDP is hardcoded to 77 Watt in this version, but you can override it by using:
sudo ~/Desktop/ssdtPRGen.sh 3600 45

Also. This script cannot detect the "baseFrequency" value, and thus you need to set it to 1200. Or whatever value you want.
 
Joined
Sep 14, 2012
Messages
10
Motherboard
Clevo P170EM
CPU
i7-3720QM
Graphics
HD4000+GTX675M
Mac
Classic Mac
Mobile Phone
Thanks for the replay PikeRAlpha

I see in the list of CPU i7-3720QE
you mean by that i7-3720QM?​

Sorry for my english
 
Joined
Jan 19, 2013
Messages
271
Motherboard
Mac mini
CPU
i[5/7]
Graphics
HD[3/4]000
Mac
Classic Mac
Mobile Phone
@rachaf,

Thank you for catching this. Now fixed in our Github repository and in the first post.
 
Joined
Dec 2, 2010
Messages
11
Motherboard
Z77A-G45
CPU
i5-3570K
Graphics
GTX660 + HD4000
Mac
Classic Mac
Mobile Phone
  1. Android
  2. iOS
Im stuck at 800mhz with i5-3570K.

/Users/oswaldini/Desktop/ssdtPRGen.sh 3800 77 1
Ivy Bridge Core i5-3570K processor detected
Max TDP override, now using: 77 Watt
CPU type override, now using: Ivy Bridge
4 logical CPU's detected with a Core Frequency of 3400 MHz
Number of Turbo States: 4 (3500-3800 MHz)
Number of P-States: 23 (1600-3800)
Number of C-States for CPU0: 3
Number of C-States for CPU1: 3
Error: board-id [Mac-00BE6ED71E35EB86] and model [iMac13 1] mismatch
/Users/oswaldini/Desktop/ssdtPRGen.sh: line 1085: iasl: command not found

This error is not true ! The board-id is from iMac13,1

EDIT:
I changed section APSS and now speedstep works on i5-3570K and iMac13,1 !
 

Attachments

  • Zrzut ekranu 2013-02-7 o 20.37.40.jpg
    Zrzut ekranu 2013-02-7 o 20.37.40.jpg
    192.7 KB · Views: 356
Joined
Jan 19, 2013
Messages
271
Motherboard
Mac mini
CPU
i[5/7]
Graphics
HD[3/4]000
Mac
Classic Mac
Mobile Phone
Im stuck at 800mhz with i5-3570K.
Error: board-id [Mac-00BE6ED71E35EB86] and model [iMac13 1] mismatch
This error is not true ! The board-id is from iMac13,1

EDIT: I changed section APSS and now speedstep works on i5-3570K and iMac13,1 !
Note the missing separator "," in "iMac13 1" and that is why you get the error. Already fixed in my local tree, but Jeroen (a friend of mine) is testing my latest work. Including some changes in the power calculation code.

About you getting it to work with iMac13,1. Great, but wasn't duplicating the lowest P-state already a known workaround?
 
Joined
Apr 2, 2010
Messages
138
Motherboard
Asus P8B-WS / 2106 Patched Bios
CPU
Xeon E3-1230V2
Graphics
Sapphire Radeon HD6850
Mac
  1. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
Note the missing separator "," in "iMac13 1" and that is why you get the error. Already fixed in my local tree, but Jeroen (a friend of mine) is testing my latest work. Including some changes in the power calculation code.

Got the same error with "Macmini6 2", see under

About you getting it to work with iMac13,1. Great, but wasn't duplicating the lowest P-state already a known workaround?

Hi, testing here with a Xeon E3-1230v2 (IvyBridge) and Macmini6,2 smbios description on an Asus P8B WS (C206 Chipset):
Code:
sh ./ssdtPRGen.sh  3700 69 1

Ivy Bridge Core CPU processor detected
Max TDP override, now using: 69 Watt
CPU type override, now using: Ivy Bridge
8 logical CPU's detected with a Core Frequency of 3300 MHz
Number of Turbo States: 4 (3400-3700 MHz)
Number of P-States: 22 (1600-3700)
Number of C-States for CPU0: 3
Number of C-States for CPU1: 3
Warning: cpu-type may be set improperly (0x0701 instead of 0x0704)
Error: board-id [Mac-F65AE981FFA204ED] and model [Macmini6 2] mismatch

As usual with this configuration i'm stuck at x8 idle and x16 under load.

After duplicating lowest frequency package in APSS I get some speedstep
Code:
MSRDumper CoreMulti(16) 
MSRDumper PStatesReached: 16 20 27 33 35 36 37
X86PlatformPlugin.jpg
Never got better than that with this rig and any smbios description/configuration, but as everything else works including sleep, audio and USB3 it is not really a problem as Xeon E3v2 is not an officially supported proc... :)
Anyway, could you add it to your list?

With iMac 13,1 or 13,2 got less steps but I think it is normal.

Anyway, thnks for the nice work.
 
Joined
Apr 2, 2010
Messages
138
Motherboard
Asus P8B-WS / 2106 Patched Bios
CPU
Xeon E3-1230V2
Graphics
Sapphire Radeon HD6850
Mac
  1. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
Note the missing separator "," in "iMac13 1" and that is why you get the error. Already fixed in my local tree, but Jeroen (a friend of mine) is testing my latest work. Including some changes in the power calculation code.

About you getting it to work with iMac13,1. Great, but wasn't duplicating the lowest P-state already a known workaround?

I got the same error with "Macmini6 2" with my unrecognized Xeon E3-1230v2

Code:
$ sh ./ssdtPRGen.sh 3700 69 1

Ivy Bridge Core CPU processor detected
Max TDP override, now using: 69 Watt
CPU type override, now using: Ivy Bridge
8 logical CPU's detected with a Core Frequency of 3300 MHz
Number of Turbo States: 4 (3400-3700 MHz)
Number of P-States: 22 (1600-3700)
Number of C-States for CPU0: 3
Number of C-States for CPU1: 3
Warning: cpu-type may be set improperly (0x0701 instead of 0x0704)
Error: board-id [Mac-F65AE981FFA204ED] and model [Macmini6 2] mismatch

EDIT: I add xeon proc specs in the script, here is the info for the E3-1200 (SB) and E3-1200v2 (IB) line.
I ad a new list for SB Xeon for cpuType=0, and added the IB xeon to the desktopIvyBridgeCPUList for the same cputype=1
Code:
xeonSandyBridgeCPUList=(
# E3-1200 Desktop Processor Series
E3-1290,95,3600,4000,4,8
E3-1280,95,3500,3900,4,8
E3-1275,95,3400,3800,4,8
E3-1270,80,3400,3800,4,8
E3-1260L,45,2400,3300,4,8
E3-1245,95,3300,3700,4,8
E3-1240,80,3300,3700,4,8
E3-1235,95,3200,3600,4,8
E3-1230,80,3200,3600,4,8
E3-1225,95,3100,3400,4,8
E3-1220,80,3100,3400,4,8
E3-1220L,20,2200,3400,4,8
)
#
# Processor Number, Max TDP, Clock Speed, Max Turbo Frequency, Number of Cores, Number of Threads
#

desktopIvyBridgeCPUList=(
# E3-1200v2 Desktop Processor Series
E3-1290V2,87,3700,4100,4,8
E3-1280V2,69,3600,4000,4,8
E3-1275V2,77,3500,3900,4,8
E3-1270V2,69,3500,3900,4,8
E3-1265LV2,45,2500,3500,4,8
E3-1245V2,77,3400,3800,4,8
E3-1240V2,69,3400,3800,4,8
E3-1230V2,69,3300,3700,4,8
E3-1225V2,77,3200,3600,4,8
E3-1220V2,69,3100,3500,4,8
E3-1220LV2,17,2300,3500,4,8
# i7-3700 Desktop Processor Series
i7-3770T,45,2500,3700,4,8
i7-3770S,65,3100,3900,4,8
...

But when testing your script with these definition I got a problem in function _getCPUNumberFromBrandString due to the machdep.cpu.brand_string format for these processors.

Code:
$ echo `sysctl machdep.cpu.brand_string` | sed -e 's/machdep.cpu.brand_string: //'
Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz

The parsing of that string does not follow the code of your script:
Code:
    local data=($brandString)
    # echo "${data[0]}" # Intel(R)
    # echo "${data[1]}" # Core(TM)
    # echo "${data[2]}" # i5-2500K
    # echo "${data[3]}" # CPU
    # echo "${data[4]}" # @
    # echo "${data[5]}" # 3.30GHz
    #
    # Restore the default delimiter
    #
    IFS=$ifs

    processorNumber="${data[2]}"

EDIT: So I add a conditional parsing of this string for Xeon proc:

Code:
    local data=($brandString)
    # echo "${data[0]}" # Intel(R)
    # echo "${data[1]}" # Core(TM)
    # echo "${data[2]}" # CPU
    # echo "${data[3]}" # E3-12XX
    # echo "${data[4]}" # V2
    # echo "${data[5]}" # @
    # echo "${data[6]}" # 3.30GHz
    #
    # Restore the default delimiter
    #
    IFS=$ifs

	if [ ${data[1]} == "Xeon(R)" ]; then
		if [ ${data[4]} == "V2" ]; then
			processorNumber="${data[3]}""${data[4]}"		# IB Xeon proc.
		else
			processorNumber="${data[3]}"					# SB Xeon proc.
		fi		
	else
		processorNumber="${data[2]}"						# Core proc.
	fi
}
with a concatenate of ${data[3]}+${data[4]} to differentiate SB E3 sandy-bridge from IB E3 (v2).
Not tested for SB Xeon, i do not know the syntax of machdep.cpu.brand_string format them, I suppose there is no "V2" in ${data[4]} but should be tested...

EDIT: I also modify the function _getCPUDataByProcessorNumber to use the new xeonSandyBridgeCPUList by adding:
Code:
    for cpuData in "${xeonSandyBridgeCPUList[@]}";
    do
IFS=","
        data=($cpuData)

        if [ ${data[0]} == $processorNumber ]; then
processorData="$cpuData"
            typeCPU=0
            IFS=$ifs
            return
fi
done

I try this modified version of your script and it works for my proc (IB E3-1230v2) but it is not tested for Core proc or SB Xeon E3 as I do not have one at the moment.

At least it works and... no more "Macmini6 2" mismatch when the proc is recognized :
Code:
$ sh ./Mod_ssdtPRGen_04.sh 3700

Ivy Bridge Core E3-1230V2 processor detected
Using the default max TDP of: 69 Watt
8 logical CPU's detected with a Core Frequency of 3300 MHz
Number of Turbo States: 4 (3400-3700 MHz)
Number of P-States: 22 (1600-3700)
Number of C-States for CPU0: 3
Number of C-States for CPU1: 3
Warning: cpu-type may be set improperly (0x0701 instead of 0x0704)
Feel free to ask if you need some info or tests, i would be happy to help.
 
Status
Not open for further replies.
Top