RevoGirl / RevoBoot

The RevoBoot-loader project
http://revogirl.wordpress.com/
Other
50 stars 138 forks source link

TurboMode for one fixed ratio #14

Closed flAked closed 13 years ago

flAked commented 13 years ago

Setting a fixed 44x multiplier for all CPU's in UEFI triggers RevoBoot to set Turbo to 59x and the debug output also shows four turbo states (59, 58, 57, 56).

RevoGirl commented 13 years ago

Ok let's see. What output do you see (in kernel.log):

1.) AppleIntelCPUPowerManagement: Turbo Ratios AAAA or 2.) AppleIntelCPUPowerManagement: Turbo Ratios 19999

The problem with 19999 is that there is no way for us to learn what multiplier we should use. The hardware decides this for us. And no, AppleIntelCPUPowerManagement doesn't know it either. No wonder of course, since UEFI wasn't exactly written for Apple. That is why you have to use the other EUFI setting, one value per core.

But besides that; Jeroen and Pike cannot reproduce this. It works "flawlessly" for them I'm told. I'm also curious as to what debug output prints 59, 58, 57 and 56 because that cannot be the one in dynamic_data.h since that simply prints the data taken from the MSR. ssdt_pr_generator.h only runs a while after that finished. Also. We don't store these kind of values, not anywhere, so I am bit lost here... and not having a hack here isn't exactly helping either.

Or are you saying that added debug dumps in ssdt_pr_generator.h shows this output? In that case you have to have more than the factory, and required by AICPUPM number of 4 Turbo states.

RevoGirl commented 13 years ago

I have asked the guys to check this once again, but it would be nice if you could help them by replying a.s.a.p. or debug this yourself since it may be UEFI related (no idea really. Just a guess).

I did found one spot in cpu.c that looked odd and have asked them to change it (double if can do with one) but I don't think that it will change anything.

flAked commented 13 years ago

I'm on it. The problem is that I have to figure out, why I don't see the Turbo Ratios being printed to the console any more by AICPUPM.

flAked commented 13 years ago

Alright, it must have been a UEFI glitch before. If I set the ratio to 44x AICPUPM outputs 1BBBA and it doesn't change if I set it to 45x. RevoBoot is printing out 59x for all cores and the requested max turbo. MSRDumper confirms that the max turbo used is 44x. The one and only generated turbo p-state is 59x. Makes sense now, the real max turbo is determined by hardware.

So it does work flawlessly here as well. Maybe add a note to the wiki that the 59x is nothing to worry about?

RevoGirl commented 13 years ago

Correct. We can only limit the max multiplier. The hardware (UEFI settings) is the master switch. Done to protect the hardware against software glitches. Thankfully.

We already had a first note, or two, about this in the source code, but you are right. We should add this to the WiKi but my time is limited. Even more so next week when my hockey training schedule kicks into high gear.

Say. Does "sudo purge" work for you, or are you getting the following error:

[ERROR] CPSystem.c:208 Unable to find bootrom nub in IO registry.

Can you test/ask other people to test this with Chameleon / Chimera? Thanks!

flAked commented 13 years ago

Yeah, get the same: [ERROR] CPSystem.c:208 Unable to find bootrom nub in IO registry. [ERROR] CPSystem.c:380 o-+- [com.a.CoreProfile.Devices] CPSystem.c:307 _CPCreateCurrentSystem: CPStatus -2 (kCPUnknownError) | Unable to determine current system's manufacturer.