Jump to content

Chameleon RC5 mode with mem detection enabled and automatic P-States & C-States generation for native power managment


kozlek
 Share

1,214 posts in this topic

Recommended Posts

Great thanks go to mozodojo as well, because without his alphanum characters filter fix, you would probably have a profiler problem :)

Hi Rekursor

 

Thanks for highlighting the point and apologies to mozodojo, as it's important that the correct people are acknowledged for their work.

 

Regards :)

Link to comment
Share on other sites

If I use GeneratePStates=yes it causes a reboot. I put some debug statements in acpi_patcher.c and traced it to this line in the generate_pss_ssdt function:

 

if (rdmsr64(MSR_IA32_EXT_CONFIG) & (1 << 27))

 

Any ideas?

 

DropSSDT=yes

GenerateCStates=yes

GeneratePStates=yes (if this is no it boots OK with the above two lines)

 

ACPI files attached. I do NOT have the SSDT.aml files in /Extra.

 

Great investigating dgobe!! I'm assuming all i7 920, 930 and above and users will automatically reboot until the code is modified. I use the same settings as stated above, and it is reproducible. Let's hope we get a fix, sitting patiently by. :) Great code by the way Mozodojo, and all the others. Thanks for all your hard work you put into this, as I am very much appreciative.

Link to comment
Share on other sites

OK, I might have found something; try that one :)

 

Here:

boot_8.zip

 

Thanks for the quick fix, Rekursor!

 

Sadly, it did not work for me (still reading 604MHz). :)

 

Unfortunately, it also had the unwanted side affect of causing my cpu temp to rise about 20 degrees :o , so I'm back on version 238.

 

I believe it's only a cosmetic issue, so I'm not worried. Thanks for your contributions to this great project!

 

Regards.

 

P.S. I did boot into Windows to check the memory speed there and everything is normal.

 

memory.JPG

 

spd.JPG

Link to comment
Share on other sites

Excellent work! I can't test it myself because I have no newest Core ix CPU. need to modify corresponding "switch" operator:

Would it help at all if some of us i7 users started posting our SSDTs extracted from linux and the like?

Link to comment
Share on other sites

Updated buildpkg for future releases :) added Italian.lproj, updated German and french. Italian needs more translations

 

How italian people can help? ;)

 

soon we post here the translated 4 file.

- description.html

- License.rtf

- Localizable.strings

- Welcome.rtfd

 

Fabio

Link to comment
Share on other sites

Excellent work! I can't test it myself because I have no newest Core ix CPU. need to modify corresponding "switch" operator:

 

OK, I get past the switch statement now but it still reboots. I'm working on isolating it but you might find it faster so I thought I would report it.

 

YOU are doing excellent work! Thank you.

 

EDIT:

This is the next problem:

wrmsr64(MSR_IA32_PERF_CONTROL, (rdmsr64(MSR_IA32_PERF_CONTROL) & 0xFFFFFFFFFFFF0000ULL) | (maximum.FID << 8) | maximum.VID);

intel_waitforsts();

Link to comment
Share on other sites

Hi mojodojo/ rekursor

 

Sorry to be awkward but I'm currently using the EFI BIOS for my mobo.

There don't appear to be any SSDT table, well what there is seems to be incorporated into the DSDT?

 

The Scope (_PR) is towards the end of the DSDT so as suggested previously I've moved to the start of DSDT but this only makes matters worse.

 

Here is what I get with untouched Scope (_PR), GenerateC&Pstates, DropSSDT=Yes

 

post-275122-1280072509_thumb.jpg

 

With Scope PR at the top of DSDT I get more 'invalid character' messages and it does not generate any SSDT.

 

AppleCPUPM seems to start however I still have CST errors, Pstates don't work and temps very high.

 

To be honest I've tried to add my usual CPU PM edits to this DSDT with no joy at all!

 

I'd like to use this EFI BIOS as it has several bonuses, so any help would be appreciated.

 

EFI_DSDT_25_07_10.dsl.zip

 

Kind Regards

D

Link to comment
Share on other sites

FormerlyKnownAs, you are using older loader version. The problem is fixed already.

 

 

I posted the wrong line before, this is the one with the problem:

 

wrmsr64(MSR_IA32_PERF_CONTROL, (rdmsr64(MSR_IA32_PERF_CONTROL) & 0xFFFFFFFFFFFF0000ULL) | (maximum.FID << 8) | maximum.VID);

intel_waitforsts();

 

 

 

Another thing I noticed was in generate_pss_ssdt and generate_cst_ssdt you have the chunk_alias array where you hard code CPU0. Maybe just use find_acpi_cpu_names to get actual processor name? Mine was P001-P008 but they are rename to CPU0-7 now.

Link to comment
Share on other sites

FormerlyKnownAs, you are using older loader version. The problem is fixed already.

Hi mozodojo, could you please send to Zef or to me the modifications that you think are ok for P/C states hanling so that we could merge that back to trunk ?

Thanks for your great work, it feels great to have you in the team :(

Oh and by the way, congrats for your SuperIO plugin, FakeSMC has never been so functional since your mod :D

 

How italian people can help? :unsure:

 

soon we post here the translated 4 file.

Fabio

 

Meraviglioso :D

BlackOSX could represent you guys as he has access to the repos, so feel free to send to him your translations,

Zef, mozodojo and I are too busy right now with the functional aspects of the future RC5 :)

Thanks!

Link to comment
Share on other sites

FormerlyKnownAs, you are using older loader version. The problem is fixed already.

 

No using boot_8

 

Actually just sorted it.

I think my problem is that Everest is clipping the start of the DSDT binary code when extracting.

 

Just added this bact to the top of my DSDT (in red.) and all works well :(

 

{
   [color="#ff0000"]Scope (_PR)
   {
       Processor (P001, 0x01, 0x00000410, 0x06) {}
       Processor (P002, 0x02, 0x00000000, 0x00) {}
       Processor (P003, 0x03, 0x00000000, 0x00) {}
       Processor (P004, 0x04, 0x00000000, 0x00) {}
   }
[/color]
   Name (SP1O, 0x4E)
   Name (IO3B, 0x0290)
   Name (IO3L, 0x10)
   Name (IOCE, 0x87)
   Name (IOCL, 0xAA)
   Name (PEBS, 0xE0000000)
   Name (PEBL, 0x10000000)
   Name (SRCB, 0xFED1C000)
   Name (SRCL, 0x4000)
   Name (

 

As previously said my pstates work native but I've noticed if I use GeneratePStates=Yes I get much lower temps!

Now just to sort my UUID error. This EFI BIOS seems much smoother than the standard AMI.

 

Huge thank you mojodojo and rekursor :unsure:

 

D

Link to comment
Share on other sites

This all seems promising, Im a nOob at this and have struggled to patch my dsdt to enable vanilla power management :blush:

 

I had to use the installer posted here because i cant for the life of me work out how to install manually, but anyway, if its helpful at all, on an msi gt640 laptop with core i7 completely vanilla apart from fakesmc, all cores working and applelpc.kext modded to load. plus the correct boot flags in .plist

the machine reboots after going through the cpus while booting. (right at the end! )

 

has that been fixed already for core i7 mobile cpus?

whats the easiest way to load in a newer boot file manually (for nOObs would be ace!)

 

keep up the good work guys, i may resign to wait until this is released P

Link to comment
Share on other sites

How italian people can help? :blush:

 

soon we post here the translated 4 file.

- description.html

- License.rtf

- Localizable.strings

- Welcome.rtfd

 

Fabio

 

Italian.

../package/Resources/Italian.lproj/Welcome.rtfd

 

Fabio

Edited by iFabio
Link to comment
Share on other sites

But what about my brunch on forge.voodooprojects? Do I need to send changes to zef dirrectly via pm? :blush:

 

I see your updates in the tree for cst and pss generation, dude you are a code ninja. Wow that was fast, I'll test and let you know

 

EDIT:

 

Reboot in the switch statement again

 

if (rdmsr64(MSR_IA32_EXT_CONFIG) & (1 << 27))

 

You only shifted 15 in your last patch. I'll give that a try unless you have advice.

 

I pasted in the previous switch statement code that you posted earlier and now it reboots somewhere in here, divide by zero?(EDIT2:yup p_states_count is = 1 when it gets to this code):

 

			// Finalize P-States
		// Find how many P-States machine supports
		p_states_count = maximum.CID - minimum.CID + 1;

		if (p_states_count > 32) 
			p_states_count = 32;

		uint8_t vidstep;
		uint8_t i = 0, u, invalid = 0;

		vidstep = ((maximum.VID << 2) - (minimum.VID << 2)) / (p_states_count - 1);

Link to comment
Share on other sites

dp55wp / core i5.

 

Im having an instant reboot.

my com.appleboot.plist:

<key>Wait</key>
<string>Yes</string
<key>DropSSDT</key>
<string>Yes</string>
<key>GeneratePStates</key>
<string>Yes</string>
<key>GenerateCStates</key>
<string>Yes</string>

my .aml http://dl.dropbox.com/u/363153/_osx/dp55wb/rc5/dsdt.aml

I removed all the info I previously added to get speedstep. I only left ps_scope

In extra I only have fakesmc

 

Let me know what else can do you need mate. Glad to help. Thanks for your time.

Link to comment
Share on other sites

I indeed found a typo in the freq ratio for your mobile chipset, it should be fixed now:

 

Please report if it works for you now, could be important for others :)

 

Thanks again, Rekursor.

 

Still no luck with the latest version (speed still reported 604MHz and temps 20 degrees higher), but I did find an earlier version (r222) that Scrax provided in an installer here that works flawlessly.

 

atm2.png

 

sys_prof2.png

 

I attached the file in case you want to compare.

 

Regards.

 

boot_v222.zip

Link to comment
Share on other sites

This is puzzling me.

Do you use the P/C States mods ?

I don't understand how the simple correction I made in the mobile chipset code could possibly result in a temp. raise :)

 

EDIT:

I believe your CPU FSB is 400Mhz, your DRAM fsb is 800Mhz, in that case it should return:

400* 0.833333 * 2 that is the 667 Mhz freq I would expect.

At least the latest build I gave you with the change should display the correct speed ...

 

Thanks again, Rekursor.

 

Still no luck with the latest version (speed still reported 604MHz and temps 20 degrees higher), but I did find an earlier version (r222) that Scrax provided in an installer here that works flawlessly.

 

boot_v222.zip

Link to comment
Share on other sites

This is puzzling me.

Do you use the P/C States mods ?

I don't understand how the simple correction I made in the mobile chipset code could possibly result in a temp. raise :)

 

EDIT:

I believe your CPU FSB is 400Mhz, your DRAM fsb is 800Mhz, in that case it should return:

400* 0.833333 * 2 that is the 667 Mhz freq I would expect.

At least the latest build I gave you with the change should display the correct speed ...

 

Yeah it's weird. I am currently using the P and C States mods. Hopefully these screens can shed some light:

 

msrtools.png

 

cpux.png

 

I'll try your latest version again and actually dig a little deeper to see what's going on with the increased temps, instead of quickly trying to load back up earlier version. :(

 

Sorry to confound you, Rekursor! :P

Link to comment
Share on other sites

 Share

×
×
  • Create New...