Jump to content

New version 1.1 of GenericCPUPowerManagement


Superhai
 Share

625 posts in this topic

Recommended Posts

Found a "bug":

 

When kext loaded(w or w/o app), usb devices (e.g. ext. bluetooth) don't work anymore :)

 

Can anyone test this plz?

I dont have usb problems loading/using the kext. But i only use USB-Flashmem, USB-Keyb, USB-Mouse, USB-MP3Player.

Maybe some chipset depending problem (usb timings get out of order..)

Does your USB-Mouse or USB Keyboard or USB-Memstick didnt work anymore after kextlaod?!

Or is it only the bluetooth?

Whats in your system.log (use Console to look in , some USB warings/err) before and after kextload ?

(I have also some USB warings even without kextlaod this kext - but no problems at all, GA-EP35-DS3, 8 USB Ports)

 

You will have to wait for superhai is back from holidays.

Link to comment
Share on other sites

tool works great for me on a ecs 945gct-m2 with a 2,4ghz allendale

 

 

 

i don't want to claim anything for a free tool but there are some things that do annoy me.

 

-once the tool is closed (but still in dock) it won't come back in the screen without closing it completly and restarting it.

 

-when i choose to display the cpu load in the bar it offen jumps between one and two digits, that really annoyng, it always atracts my eye because the the other items in the bar move, there shoul be a way that the cpu load always uses two digits even if the load ist under 10%

 

-on every trestart i have to select this settings again

 

-would be really cool if it wouldn't be an app but a pref pane

 

 

 

i don't know anything about programming if it goes over qbasic :P , so i don't know how hard anything from this would be to realise, yea and it's a early beta and there are more important things to fix then my cosmetical wishes.

 

apart from that, it works great on my machine, thanks for your efforts

 

 

ah, nearly forgot, it tells me cpu tempretures about 10 degrees celsius above tempreturemonitor i don't know who to thrust

Link to comment
Share on other sites

Very good work till now! I like this app more than the commerical "CoolBook Controller" one, but there are still some bugs like the one FavelX reportet. But mostly i use the slowest Speed (about 1000Mhz) for Battery use. Enought power for my use.

 

There was only one time my laptop crashed, but its not reproducable. So - it dont matter.

 

Hope for a final version soon!

 

For specs, see my signature.

Link to comment
Share on other sites

Very good work till now! I like this app more than the commerical "CoolBook Controller" one, but there are still some bugs like the one FavelX reportet. But mostly i use the slowest Speed (about 1000Mhz) for Battery use. Enought power for my use.

 

There was only one time my laptop crashed, but its not reproducable. So - it dont matter.

 

Hope for a final version soon!

 

For specs, see my signature.

Coolbook does not use/support Intel Speedstep - this tools makes all chages by the "hand" - by cpu codeing.

Link to comment
Share on other sites

i can only get a max frequency of 2000MHz insted of 2100 which is the right one.

 

bash-3.2# ioreg -lw0 | grep PerformanceStateArray

| | "PerformanceStateArray" = (<35080000b88800000a0000000a000000284b0000284b0000>,<34080000b88800000a0000000a000000224a0000224a0000>,<40060000c05d00000a0000000a0000001c0800001c080000>,<b0040000803e00000a0000000a0000001706000017060000>,<20030000b03600000a0000000a0000001388000013880000>)

bash-3.2#

Link to comment
Share on other sites

There are some bugs in the interface. Once i press the red X on the left corner, the programm closes the interface, its active but i cant get it back to screen. with apple+h (hide) it works!

 

And the second problem, when i activate the settings to show clock + temperature, those settings do not safe! after reboot i have to start the programm and set those options once more ...

Link to comment
Share on other sites

There are some bugs in the interface. Once i press the red X on the left corner, the programm closes the interface, its active but i cant get it back to screen. with apple+h (hide) it works!

 

And the second problem, when i activate the settings to show clock + temperature, those settings do not safe! after reboot i have to start the programm and set those options once more ...

There are not really bugs, that is simple not implemented because its early beta. superhai know this.

The focus of the beta is more getting the .kext running, after is (near) finsihed make the control programm.

Link to comment
Share on other sites

Same "probs" as mentioned above, but besides of that working perfectly with:

 

retail 10.5.4 E2180 on Asus P5K-E

 

It shows up about 20 degrees more core temp than HardwareMonitor, so it figured out that my random crashes where due to thermal shutdowns :)

 

*thumbup*

 

Great tool !!!!!

Link to comment
Share on other sites

Same "probs" as mentioned above, but besides of that working perfectly with:

 

retail 10.5.4 E2180 on Asus P5K-E

 

It shows up about 20 degrees more core temp than HardwareMonitor, so it figured out that my random crashes where due to thermal shutdowns :)

 

*thumbup*

 

Great tool !!!!!

Core temp is (with newer cpus) not measured by "how much Celsius" call to the cpu. Its much more complicated and relative to individual TJMAX values.

To get more real temps its really helpfull for SUPERHAI if you post here some information about your CPU.

Some examles of these info is shown on the pages before.

Most dont know how much TJMAX is and TJMAX depends also from the stepping (like L0,M1,... - means cpu die update version) of the cpu.

 

yours, E2180 :

http://processorfinder.intel.com/details.aspx?sSpec=SLA8Y

TJMAX = 73,2 Celsius - SUPERHAI need this value

 

I looked in the source of this beta ,kext. There are,until now not so many CPU types in (needed if ACPI didnt give CPU information).

CPUTable cpu_tables[] =

{

{ 0x6f6, false, false, 0x0933, 0x061b, 0xa, 100, 125, 7125 , "Core 2 Duo" },

{ 0x6fd, true, false, 0x092b, 0x0613, 0xa, 100, 125, 7125 , "Core 2 Duo (Mobile)" },

{ 0x10676, true, true, 0x0c22, 0x0611, 0xa, 105, 125, 7125 , "Core 2 Duo (Mobile)" }, // prelim

{ 0x10676, false, true, 0x0922, 0x0611, 0xa, 90, 125, 7125 , "Core 2 Duo" }, // prelim

};

You can see yours, but is there called C2D Mobile, not Pentium Core Duo (yours is ID 6fd). TJMAX values of this small CPU list may not!

be real, so temp may wrong. This happend if .kext cant get cpu information from ACPI. You can see which way is used (ACPI or those above/default values) by using the debug version.

My E4400, ID 06f2 :

GenericIntelCPUPowerManagement: Probing your system

GenericIntelCPUPowerManagement: CPU is Intel

GenericIntelCPUPowerManagement: Support for Enhanced Intel SpeedStep

GenericIntelCPUPowerManagement: Thermal CPU adjustment factor available

GenericIntelCPUPowerManagement: Thermal sensor available

GenericIntelCPUPowerManagement: Found I/O Kit CPU's at address 6f28580

GenericIntelCPUPowerManagement: Found I/O Kit CPU at address 3781880 CPU number 0 with name CPU0

GenericIntelCPUPowerManagement: Found I/O Kit CPU at address 3781700 CPU number 1 with name CPU1

GenericIntelCPUPowerManagement: Intel Core 2 Duo (Mobile)/Quad (Mobile)/Extreme/Pentium Dual-Core/Xeon (6 0Fh) (65nm)

GenericIntelCPUPowerManagement: CPU signature is 6f2

GenericIntelCPUPowerManagement: Thermal Junction Max is 100 C current temperature is 38 C Wrong, i must add my TJMAX 61,4 C in the source (ACPI CPI Info isnt working well enough with my GA-35 board)

GenericIntelCPUPowerManagement: We have our device tree at 367f7c0

You will get TJMAX here (post it with all other information you can get)

Be careful TJMAX may vary even same CPU type, same GHZ but other (newer/older) stepping.

http://processorfinder.intel.com/details.aspx

Bild_139.jpg

Link to comment
Share on other sites

Undervolting

 

This horribly dirty hack seems to be working for me. I don't really know what I'm doing so most of this is probably wrong. No doubt somebody will be kind enough to point out where I'm talking out of my arse.

 

Many thanks to Superhai for their hard work.

 

Use this information at your own risk.

 

You'll need to download the soucres from Superhai's website.

  1. All the juicy stuff is in GenericIntelCPUPowerManagement.cpp. You can alter the CPU voltage for any p-state by twiddling its .ctl.
     
  2. Each p-state has an associated ctl. ctl is 16 bits, encoding the frequency and voltage for the p-state. The first (most significant) 8 bits is the FID and the remaining 8 bits is the VID.
     
  3. The debug version of the kext outputs the FIDs and VIDs for each p-state to system.log.
     
  4. There is a formula to calculate VIDs from voltages (remember to convert to hex!).
     
  5. If you've used Linux PHC before the FIDs and VIDs you want here are the same (remember to convert to hex!).

My CPU [Merom T5600] can do 875mV across its entire operating frequency range so my changes are very simple:

 

pstate[pstate_count].ctl = (pstate[pstate_count].ctl & 0xff00) + 0xd;

 

after line 222 (pstate[pstate_count].display_voltage = ...) fixes the CPU voltage at 875mV across all p-states.

 

Optional:

  • Comment out what are now lines 779 and 780 to disable the automatic engagement of auto throttling. Add throttler(0); below the line auto_run=true to bring the CPU back up to full speed.

Link to comment
Share on other sites

Superhai.:

 

These're the results for Pentium Dual-Core (Intel T2370) on Dell Inspiron 1525

 

| | "PerformanceStateArray" = (<c5060000187900000a0000000a0000002b0d00002b0d0000>,<35050000d85900000a0000000a000000210a0000210a0000>,<2b040000504600000a0000000a0000001a0800001a080000>,<20030000c83200000a0000000a0000001306000013060000>)

Link to comment
Share on other sites

Intel Core Duo (Yonah) T2400 @ 1.83 Ghz

Sony VAIO SZ110 Vanilla 10.5.5 Stock ACPI

 

"PerformanceStateArray" = (<29070000187900000a0000000a000000270b0000270b0000>,<35050000204e00000a0000000a0000001b0800001b080000>,<e8030000c83200000a0000000a0000001306000013060000>)

 

Working perfect. I can set 1000, 1333, 1499, 1666, and 1833 Mhz. Really cool man, props be to you.

 

-Jason

Link to comment
Share on other sites

Hi...

CPU Type [intel® CoreTM 2 Duo CPU P8400 @ 2.26GHz]

CPU Signature [10676h] Mobile CPU [Y] Latency [_____] us

Max multiplier [8.5x] Half multiplier [6.0x] TjMAX [105°C] C

Control Max [__________] Min [__________] 

Range: Frequency [1596] MHz to [2266] MHz, Voltage [1.00V] mV to [1.250V] mV

Voltage stepping [_____] mV.

CPU Family [6] Model [7] Stepping [6]

macoff$ ioreg -lw0 | grep PerformanceStateArray 

| | | "PerformanceStateArray" = (,,<40060000983a00000a0000000a0000001706000017060000>,<20030000e02e00000a0000000a0000000d8600000d860000>)

 

MacOff

Link to comment
Share on other sites

Hello SuperHai, here are my results:

 

PerformanceStateArray" = (<83060000187900000a0000000a0000002c0a00002c0a0000>,<35050000f05500000a0000000a0000002008000020080000>,<e8030000c83200000a0000000a0000001306000013060000>)

 

CPU Type [intel Core Duo CPU T2300E]

 

CPU Signature [____] Mobile CPU [Y] Latency [_____] us

 

Max multiplier [10x] Half multiplier [__] TjMAX [105°C] C

 

Control Max [__________] Min [__________]

 

Range: Frequency [982] MHz to [1667] MHz, Voltage [1.263V] mV

 

Voltage stepping [_____] mV.

 

CPU Family [6] Model [E] Stepping [8]

 

 

 

 

Not complete, don't know how to fill the rest ATM...

Link to comment
Share on other sites

Results for T2080 Dual Core Mobile are as follows:

 

CPU Type [ Intel Pentium Dual-Core Mobile Processor T2080 ]

CPU Signature [ 06Ech ] Mobile CPU [ Yes ]

Latency [ 10 µs ] - Processor core (including L2 cache) is unavailable for up to 10 µs during the

frequency transition ] us

Max multiplier [ 13 ] Half multiplier [ 6 ] TjMAX [ 100 ] C

Control Max [__________] Min [__________]

Range: Frequency [ 800 ] MHz to [ 1733 ] MHz, Voltage [ 1000] mV to [ 1300] mV

Voltage stepping [_____] mV.

CPU Family [ 6 ] Model [ E ] Stepping [ C ]

 

I'm not sure how to fill in the rest of the table. Here's the results of ioreg:

 

ioreg -lw0 | grep PerformanceStateArray

| | "PerformanceStateArray" = (<c5060000187900000a0000000a000000280d0000280d0000>,<35050000d85900000a0000000a000000200a0000200a0000>,<2b040000504600000a0000000a0000001b0800001b080000>,<20030000c83200000a0000000a0000001506000015060000>)

 

BTW, the app is working great. My average temps were 55-65C on my Gateway. Now it's down to 35C. On my son's Acer the laptop was running very hot-- 70-85C; now it's running at 45-50C. Both are on the vanilla kernel, with different OS revs (10.5.4, and 10.2).

 

When I get my Mac Book Pro back, I'll give that one a try as it runs hot and the only solution I've found is SMCanControl.

 

Thanks again!

Link to comment
Share on other sites

I am posting this because I need feedback for the app and kext. Reminder that it is beta still. I have reports that it is working on proper macs as well with success.

 

And to everyone (working or non-working) can you post the result of

ioreg -lw0 | grep PerformanceStateArray

and which cpu you have. (It is not necessary to load the kext for that)

 

Download is here:

http://www.superhai.com/darwin.html

 

You don't need to copy it to /System/Library/Extensions to run it if you don't want it at startup.

Just copy it somewhere and ensure that you do a

 

sudo -s

chmod -R 755 GenericIntelCPUPowerManagement.kext

chown -R root:wheel GenericIntelCPUPowerManagement.kext

then a

 

kextload GenericIntelCPUPowerManagement.kext

 

To unload it again you can use

 

kextunload GenericIntelCPUPowerManagement.kext

 

It will complain about "Kext has immediate dependencies on both com.apple.kernel and com.apple.kpi components; use only one style" because some functions are required from both kpi and kernel.

 

the app can be anywhere, but in /Application is ok, no need to set any custom permission.

 

And last but least thanks to mercurysquad et al for some of the ideas and basis of this kext.

 

I need also some CPU information for you that it is not working or working properly. (Basically without or with flaweed ACPI).

Please fill in what you have or know. (Running the kext on flawed ACPI implementaions and CPU that is not in the table, will try to make same template with information)

doing a grep GenericIntelCPUPowerManagement /var/log/system.log (For those of you needing this the loading of the kext is taking some time)

CPU Type	   [__________________________________________________]
CPU Signature  [__________] Mobile CPU [_____] Latency [_____] us
Max multiplier [_____] Half multiplier [_____] TjMAX [_____] C
Control Max	[__________] Min [__________] 
Range: Frequency [_____] MHz to [_____] MHz, Voltage [_____] mV to [_____] mV
Voltage stepping [_____] mV.
CPU Family	   [_____] Model [_____] Stepping [_____]

 

Short guide here: CPU Type is just a string i. e. Core 2 Duo, CPU signature is a signature (hex value). Mobile is if it is mobile or not. Latency is time required for a cpu to do the stepping. If not known I will set it to 10 which seem common. Max multiplier is obvious I think. Common values on core are 9 or 12. If you have min value that is not 6 please provide this info separately. Half multiplier is the same as no-integer ratio. I.e. if you have half steps on the multiplier, i.e. 9.5. TjMAX is max temperature and is used for temp calc, this info is often difficult to find on desktops. Common values are from 80 to 105. Control is control sent and received from the status and control MSR's for speedstep. Is of two bytes, first is stepping and second is voltage id, (in hex). Max is usually 0x0933 or 0C33, min is like 0x0613. Rest should be obvious.

 

Also if you can provide with the result of this: (Even if it works fine for you)

 

ioreg -lw0 | grep PerformanceStateArray

 

This is free app and kext, but it is limited and reserved licence and not for any purpose or fitness. Commercial distribution is prohibited without additional licence.

 

 

I dont really understand what Im doing =) --->ioreg -lw0 | grep PerformanceStateArray

 

It looks like a log of the loading of the system.

 

If I do ----> ioreg -lw0 i get a ton of output

if I do -----> ioreg -lw0 | grep PerformanceStateArray

I dont get any thing.

 

If i try to reload the Generic CPU POWER... kext, I get some message basically saying

I have a GENUINE intel CPU and thats why It wont be loadet

 

i actually have a INTEL D930 on a D945GNTLKR mobo.

and just loadet the VOODOO XNU 9.5 kernel.

I like to help but I need a clearer guide

please message me =) thanks

Link to comment
Share on other sites

"if I do -----> ioreg -lw0 | grep PerformanceStateArray

I dont get any thing."

 

Hi, that means your BIOS , ACPI- DPDT (an Table about Powersaving) of BIOS, isnt "perfect" coded. So OS X cant get those values.

Sure you must enable ACPI and Speedstep in the BIOS (i think you have that enabled).

I would make PSTATES for your CPU (in the .plist) and use that 1.3.2 (older mecury...) version until superhai´back.

PS: Using newest Voodoo XNU 9.5 kernel )now Alpha12) you cant use speedstep.app anymore. Simple change the MHZ by using the sysctl command. There is a posting in the voodoo 9.5 thread about speedstep (by me :blink: ) clears that.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...