Jump to content

Master Chief's P5K PRO ACPI Warfare


VegasKarma
 Share

908 posts in this topic

Recommended Posts

<...>

 

But... everything you see here will not even be needed anymore... in the near future that is. Which basically means that I am writing (finishing) the first ACPI patcher and DSDT generator. And the good news is that it will be released in 2010 (soonish).

 

p.s. In case this all isn't clear enough; We will soon no longer need to have a DSDT – anywhere on your system – and hacking DSDT and P-States soon after that will be done for you... 'automagically'.

 

That my friends is my Christmas present for you... Happy Hacking!

 

Thats is wonderfull news! Hopefully these will apply to the GB users too :(

I'm staying tuned... You should join voodoo project and take it to a new level.

 

Anyhow, "bedankt voor de bloemen".

Link to comment
Share on other sites

Hi all. I am currently re-installing OS X 10.6 and waiting for it to finish... and I want to use this time to also show you my new SSDT table:
DefinitionBlock ("ssdt.aml", "SSDT", 1, "MC", "POWERM", 0x00000001)
{
   Scope (_SB)
   {
       Name (NCPU, [color="#FF0000"]0x04[/color])
       Name (PST0, [color="#FF0000"]0x4720[/color])
       Name (PST1,[color="#FF0000"] 0x071E[/color])
       Name (PST2, [color="#FF0000"]0x461C[/color])
       Name (PST3, [color="#FF0000"]0x0616[/color])
       Name (CST, Package (0x04)
       {
           0x03, 
           Package (0x04)
           {
               ResourceTemplate ()
               {
                   Register (FFixedHW, 
                       0x01,               // Bit Width
                       0x02,               // Bit Offset
                       0x0000000000000000, // Address
                       ,)
               }, 

               One, 
               One, 
               0x041C
           }, 

           Package (0x04)
           {
               ResourceTemplate ()
               {
                   Register (SystemIO, 
                       0x08,               // Bit Width
                       0x00,               // Bit Offset
                       [color="#FF0000"]0x0000000000000814[/color], // Address
                       ,)
               }, 

               0x02, 
               One, 
               0x01F4
           }, 

           Package (0x04)
           {
               ResourceTemplate ()
               {
                   Register (SystemIO, 
                       0x08,               // Bit Width
                       0x00,               // Bit Offset
                       [color="#FF0000"]0x0000000000000815[/color], // Address
                       ,)
               }, 

               0x03, 
               0x55, 
               0xFA
           }
       })
       Processor (CPU1, 0x01, [color="#FF0000"]0x00000810[/color], 0x06)
       {
           Alias (PSS, _PSS)
           Alias (PSD, _PSD)
           Alias (CST, _CST)
       }

       Processor (CPU2, 0x02, [color="#FF0000"]0x00000810[/color], 0x06)
       {
           Alias (PSS, _PSS)
           Alias (PSD, _PSD)
           Alias (CST, _CST)
       }

       Processor (CPU3, 0x03, [color="#FF0000"]0x00000810[/color], 0x06)
       {
           Alias (PSS, _PSS)
           Alias (PSD, _PSD)
           Alias (CST, _CST)
       }

       Processor (CPU4, 0x04, [color="#FF0000"]0x00000810[/color], 0x06)
       {
           Alias (PSS, _PSS)
           Alias (PSD, _PSD)
           Alias (CST, _CST)
       }
   }
}

This file is located in: /Extra/ACPI/ and is only 342 bytes. Which is only 15% of what I used to use (my dsdt.aml was 2265 bytes). And this guys & gals is only 0.0096% of the original DSDT. And I'm not even counting the CPUnPM.aml files which we also used to load. Remember?

 

Now note the red parts, because these are the thing you have to verify and change accordantly. For now that is!

 

And start with NCPU which obviously represents the number of cores. Anyway. Set it to 0x02 when you have an Intel Core 2 Duo processor, or 0x08 when you have an Intel Core i7. In that case you'll also want to add a few more Processor blocks.

 

And there's more good news, because we are also going to change the way P-States are specified. For now you'll only use PSTn (1, 2, - 9, A) with the usual value. That is all.

 

But... everything you see here will not even be needed anymore... in the near future that is. Which basically means that I am writing (finishing) the first ACPI patcher and DSDT generator. And the good news is that it will be released in 2010 (soonish).

 

p.s. In case this all isn't clear enough; We will soon no longer need to have a DSDT – anywhere on your system – and hacking DSDT and P-States soon after that will be done for you... 'automagically'.

 

That my friends is my Christmas present for you... Happy Hacking!

 

Wow

Link to comment
Share on other sites

It's interesting but I don't understand how to compile it:

 

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20091112 [Nov 13 2009]
Copyright (C) 2000 - 2009 Intel Corporation
Supports ACPI Specification Revision 4.0

/Users/scrax/Desktop/SSDTv0.2.dsl	18:			 Alias (PSS, _PSS)
Error	4065 - Object not found or not accessible from scope ^  (_PSS)

/Users/scrax/Desktop/SSDTv0.2.dsl	19:			 Alias (PSD, _PSD)
Error	4065 - Object not found or not accessible from scope ^  (_PSD)

/Users/scrax/Desktop/SSDTv0.2.dsl	23:			 Alias (PSS, _PSS)
Error	4065 - Object not found or not accessible from scope ^  (_PSS)

/Users/scrax/Desktop/SSDTv0.2.dsl	24:			 Alias (PSD, _PSD)
Error	4065 - Object not found or not accessible from scope ^  (_PSD)


Elapsed time for major events


Miscellaneous compile statistics

	102 : Parse nodes
	 20 : Namespace searches
	 14 : Named objects
	  0 : Control methods
	 22 : Memory Allocations
 188712 : Total allocated memory
	  0 : Constant subtrees folded

ASL Input:  /Users/scrax/Desktop/SSDTv0.2.dsl - 29 lines, 1043 bytes, 14 keywords
Compilation complete. 4 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

 

And what bootloader support /Extra/ACPI ?

 

this is the code i use for my CPU:

DefinitionBlock ("ssdt.aml", "SSDT", 1, "MC", "POWERM", 0x00000001) {
Scope (_SB) {
	Name (NCPU, 0x02)
	Name (PST0, 0x082A)
	Name (PST1, 0x0724)
	Name (PST2, 0x061D)
	Name (CST, Package (0x04) { 0x03, 
		Package (0x04) {
			ResourceTemplate () { Register ( FFixedHW, 0x01, 0x02, 0x0000000000000000, ,) }, 
			One, One, 0x041C }, 
		Package (0x04) {
			ResourceTemplate () { Register (SystemIO,  0x08, 0x00, 0x0000000000000814, ,) }, 
			0x02, One, 0x01F4 }, 
		Package (0x04) {
			ResourceTemplate () { Register (SystemIO, 0x08, 0x00, 0x0000000000000815, ,) }, 
			0x03, 0x55, 0xFA } })
	Processor (CPU1, 0x01, 0x00000810, 0x06) {
		Alias (PSS, _PSS)
		Alias (PSD, _PSD)
		Alias (CST, _CST)
	}
	Processor (CPU2, 0x02, 0x00000810, 0x06) {
		Alias (PSS, _PSS)
		Alias (PSD, _PSD)
		Alias (CST, _CST)
	}
}
}

Link to comment
Share on other sites

It's interesting but I don't understand how to compile it:

That's because I left something out. And intentionally because I knew that this was going to happen. Please be patience my friend. I'll help you when I'm done, but it is after all still Christmas. At least for some of us ;)

 

And what bootloader support /Extra/ACPI ?

The one I am using. The one I am going to provide one day soon.

Link to comment
Share on other sites

That's because I left something out. And intentionally because I knew that this was going to happen. Please be patience my friend. I'll help you when I'm done, but it is after all still Christmas. At least for some of us :D

 

like i said

It's just great, can't wait to test...

 

:D

 

I've spent my Christmas a bit sick and so In this day I am at home testing various things ;)

 

Thanks for the reply.

When you have time for another question about the firewire hotplug,could you tell me if you made some progress?

Store (Package (0x02){"[color="#FF0000"]fwports[/color]",Buffer (0x04){0x0[color="#FF0000"]1[/color], 0x00, 0x00, 0x00}}, Local0)

and why this "in red modifications" to the patch posted here ?

Link to comment
Share on other sites

...

When you have time for another question about the firewire hotplug,could you tell me if you made some progress?

I'll let you know the minute it works.

 

...

and why this "in red modifications" to the patch posted here ?

I found this in an iMac9.1 and thus I gave it a try. You can enter: grep -r 'fwport' . and grep -r 'fwhub' . to find the matching kext.

 

Note: There's also fwtune and fwswappedbib but I haven't looked into it. Not yet that is.

 

Thats is wonderfull news! Hopefully these will apply to the GB users too :) I'm staying tuned... You should join voodoo project and take it to a new level.

Hopefully yes (the GB part). But I won't join any team, but my own. Not that I don't like them, or their work, but that's the way it is (thinking of setting up my own forum... or I might accept a staff membership here).

 

Anyhow, "bedankt voor de bloemen".

I think that this is the second time you used it, but I don't understand it. Sorry.

 

Is it possible (and if it is )how do i make a modified install dvd5 with only the files needed for p5k pro mobo and ati 4870hd and cpu Q6600

Yes it is possible, but that's OT talk. And there are obviously other, much better places to discus this. Not here. Thank you.

 

Tip: Think USB stick (much faster).

 

Hi master, listen, but of the dsdt what will? I would say, the dsdt table WHERE WILL? In bios directly? Or??

Eventually in the same spot (in memory) but it will be generated for you.

 

Second: your new bootloader on which bootloader will be based??

A rewrite of Chameleon 1.0 and it will be called "Revolution".

 

p.s. Something took off a massive five revs at boot time!!!

 

Edit: I am still trying to find out what it was that changed it this much. The biggest hurdle now is CPU Power Management. I mean take a look at your kernel.log and see what I am talking about. This thing is taking way too much time to initialize...

 

Edit: I am going to move this to a new thread now... Done. Here it is.

Link to comment
Share on other sites

I'm wondering: does anyone have working Gbit on their P5K PRO? I have a Gbit enabled switch but when I manually change the link type to 1000baseT, my ethernet doesn't work anymore. 100Mbit works like a charm.

Link to comment
Share on other sites

I'm wondering: does anyone have working Gbit on their P5K PRO? I have a Gbit enabled switch but when I manually change the link type to 1000baseT, my ethernet doesn't work anymore. 100Mbit works like a charm.

same here, but i dont need the gbit

Link to comment
Share on other sites

Who here can use my insane and/or extremely insane DSDT's with only the PSS object changed? The reason I ask is that we could use a few extra testing for Revolution.

i have to say i would love to test it.but i am not that familiar with mac yet.so maby i better not.

unless its straight forward to use.

Link to comment
Share on other sites

DSDT V3.3 post #535 (page 27)

I checked your DSDT code and noticed that you have disabled the _PIC method (Well forwarded it to debug port which is the same thing). Is it because you know that SL is using APIC, so you have removed all the If statements that are checking it or is there something else?

 

And I also noticed that you have implemented all the CPU throttling and C-states functions directly under CPUs, no if statements anymore to check the capabilities via _OST and dynamic loading after that. Again have you removed those checks because you know that SL will always support them?

 

What I'm trying to do is optimize my DSDT to SL and remove all unnecessary things from my code, so your comments are more than welcome and if you can provide the background for your decisions, that would be even better.

 

And one more question. When you user Store (something, DBG9), where and how can you see this information. Is it visible only when using remote debugging (Ethernet, Firewire etc), or will it be logged to any log as well? I have tried different boot options without success (debug=0x8, io=0x80)

Link to comment
Share on other sites

EDIT: Now i'll test the new SSDT

 

2ndEDIT: At a first look there are no changes at all from previous version,

If I extract the dsdt it's the same as before (with SSDTv2) but it loads the SSDT v3 with my p-state checking it with wait=yes at boot

ioreg also doesn't change.

NOTE: firewire is working as expected (no hotplug) also with L18 instead of L1E, the unrecognized device is SMBUS i've attached the ioreg with SSDTv3 and bootv2

Mac_Pro_di_scrax_.ioreg.zip

dsdtWITHbootv2_SSDTv3.dsl.zip

 

When compiling Chameleon2RC4 with modded /i386/libsaio/dsdt_patcher.c and /i386/libsaio/acpi_patcher.h (with the output from the perl script used with my working dsdt.aml)

i need to make some changes to be able to compile it without errors:

from this:

int setupACPI() // I use upper case here!

to this:

int setupAcpi() // I use upper case here!

from this:

	fadt_mod->Flags	|= 0x400;

to this:

//	fadt_mod->Flags	|= 0x400;

 

there are still some warning at the end that i ignored.

 

But after that the boot is not working as expected, audio is still missing no more shutdown/reboot/stop (fadt related ?) and in the extracted dsdt i can see the mods i made, but the last lines with your method are messed up

Link to comment
Share on other sites

We're still in an early testing phase of course – to gather data for the new ACPI patcher – but it is already important that you can compile Chameleon RC4 with the modified files... without any errors! I have attached a new ZIP file with my latest changes so please give them a try.

 

Note: In case you are using my Perl script – which is also included in the attachment – then check the number of bytes, because it must be dividable by four. And if not, then add Noop just above the last close } I did the same with the included test DSDT.dsl so you can see what I did. And please note that you shouldn't use my perk script but the data provided in acpi_patcher.h otherwise you are not helping me!

Revolution_V03.zip

Link to comment
Share on other sites

but it is already important that you can compile Chameleon RC4 with the modified files... without any errors!

 

Ok I can compile Chameleon with the attached file without any errors, and without any changes by me. If i start with the resulting boot I don't see any differences from boot v2 in ioreg or for audio. The injection in SSDTv3 are not recognized.

 

Just for test i'll try to convert the working dsdt i have with your script and then try to compile that

Edit: Done! with my dsdt compiled the revolution boot is working as expected with audio and all my dsdt.

 

From the first test seems that i have this new warning at boot with bootv2, bootv3 and also my boot:

 

Warning - kext com.apple.iokit.CHUDProf has immediate dependencies on both com.apple.kernel* and com.apple.kpi.* components; use only one style.

Link to comment
Share on other sites

Ok I can compile Chameleon with the attached file without any errors, and without any changes by me.

Perfect. Step 1 completed.

 

If i start with the resulting boot I don't see any differences from boot v2 in ioreg or for audio. The injection in SSDTv3 are not recognized.

That's because the majority of the DSDT code is the same for all boards. That is for ICHn based boards. Not NVIDIA et all.

 

And the basic idea for now is to include a general / stripped down DSDT in the boot loader, and to let you add board specific items in SSDT. This way more people can start using it, eventually. But there's a catch... and that is that you can't override objects in the DSDT. You can only add new objects. Please keep this in mind!

 

From the first test seems that i have this new warning at boot with bootv2, bootv3 and also my boot:

That's because you installed Xcode. You may remove the three CHUD*.kext's if you like (I moved them into an Xcode specific folder) but do keep them for later use.

Link to comment
Share on other sites

Perfect. Step 1 completed.

Good.

 

EDIT: I was wrong yesterday, the boot v3 and the SSDT v3 are working as expected. The audio is now working in ioreg i see the changes. So now for

Step 2 I'll try to add SBUS (pci8086,2930@1F,3) in my SSDT. Another thing i'll try to change is the firewire ADR from 18 to 1E (PCI0@0/PCIB@1E/pci1106,3044@3)

And i'll test also a boot without EFI string but just SSDT injection to see if there are big differences

 

Some thing I don't understand yet:

At boot if I start whit wait=yes, the bootloader tells me that he has loaded dsdt.aml smbios.plist and ssdt.aml but I was thinking that the dsdt.aml loading was removed.

Rekursor patch is not working or not integrated? My UUID is not the one set by SystemUUID in c.a.B.p but the default Chameleons one (DF557FA2-C304-556B-A442-960AB835CB5D), restart after stop is working so your OSXRestart is integrated and working, you confirm?

 

EDIT2:

Adding Firewire and Sbus is not working, maybe something wrong in my edit, attached SSDTv4 with my mod SSDTv4.dsl.zip

Link to comment
Share on other sites

We're still in an early testing phase of course – to gather data for the new ACPI patcher – but it is already important that you can compile Chameleon RC4 with the modified files... without any errors! I have attached a new ZIP file with my latest changes so please give them a try.

 

Note: In case you are using my Perl script – which is also included in the attachment – then check the number of bytes, because it must be dividable by four. And if not, then add Noop just above the last close } I did the same with the included test DSDT.dsl so you can see what I did. And please note that you shouldn't use my perk script but the data provided in acpi_patcher.h otherwise you are not helping me!

 

Hi MC

 

Your latest version of Revolution works a treat with my Asus X58 board and modded DSDT.aml converted into acpi_patcher.h using the perl script. Np problems compiling your original either. Great work!

Link to comment
Share on other sites

Good.

 

EDIT: I was wrong yesterday, the boot v3 and the SSDT v3 are working as expected. The audio is now working in ioreg i see the changes.

Great. Up to the next step.

 

So now for Step 2 I'll try to add SBUS (pci8086,2930@1F,3) in my SSDT.

Device (SBUS) will be defined in the next update.

 

Another thing i'll try to change is the firewire ADR from 18 to 1E (PCI0@0/PCIB@1E/pci1106,3044@3)

I see you did that already.

 

And i'll test also a boot without EFI string but just SDT injection to see if there are big differences

Should work.

 

Note: You'll need to use device-properties in a next update for graphics and USB because I have removed the following files:

 

ati.c

ati.h

hpet.c

hpet.h

nvidia.c

nvidia.h

 

And even more files will be gone in a next update, simply because I want to add Revolution to a modified BIOS.

 

Some thing I don't understand yet:

At boot if I start whit wait=yes, the bootloader tells me that he has loaded dsdt.aml smbios.plist and ssdt.aml but I was thinking that the dsdt.aml loading was removed.

We don't load DSDT from file – you can replace / rename all of them on your hard disk if you like – but we still replace the built-in factory DSDT yes.

 

Rekursor patch is not working or not integrated? My UUID is not the one set by SystemUUID in c.a.B.p but the default Chameleons one (DF557FA2-C304-556B-A442-960AB835CB5D),

Not implemented.

 

restart after stop is working so your OSXRestart is integrated and working, you confirm?

No. Duvel300 wrote this patch. I simply stripped it down to another one liner (which is all we need).

 

Note: I did not add a license header to the files, but I will fix this with a next update in the usual Mozilla style – all files without a license header are automatically covered by the APSL.

 

EDIT2: Adding Firewire and Sbus is not working, maybe something wrong in my edit, attached SSDTv4 with my mod SSDTv4.dsl.zip

Please be more specific. What exactly isn't working? The rest of the SSDT code is still working?

 

Hi MC

 

Your latest version of Revolution works a treat with my Asus X58 board and modded DSDT.aml converted into acpi_patcher.h using the perl script. Np problems compiling your original either. Great work!

Thank you for the confirmation, but please make sure that you strip your DSDT.dsl to a bare minimum (±2KB).

Link to comment
Share on other sites

We're still in an early testing phase of course – to gather data for the new ACPI patcher – but it is already important that you can compile Chameleon RC4 with the modified files... without any errors! I have attached a new ZIP file with my latest changes so please give them a try.

 

Note: In case you are using my Perl script – which is also included in the attachment – then check the number of bytes, because it must be dividable by four. And if not, then add Noop just above the last close } I did the same with the included test DSDT.dsl so you can see what I did. And please note that you shouldn't use my perk script but the data provided in acpi_patcher.h otherwise you are not helping me!

 

What do you think about page 510 of ICH9 datasheet, does desktop ICH9 support C3 and C4 ?

Link to comment
Share on other sites

Device (SBUS) will be defined in the next update.

Ok i'll wait.

Please be more specific. What exactly isn't working? The rest of the SSDT code is still working?

P-states are working but all the board specific items in SSDT are not recognized also audio that wasn't changed from your SSDTv3 in the one i've edited don't work anymore.

Now I try with a more clean SSDT and report back the results

 

EDIT: For what I can see now, the SBUS device was giving me problem in ssdt, after removing that it is all working ok.

 

Now I have:

boot v3

SSDT v3 without any comment so SATA, AUDIO, PATA and FIREWIRE (with 0x18 -> 0x1E and L_18 -> L_1E mod) added to generic boot dsdt

SATA, LPCB, SBUS. USB device-id and GFX string in c.a.B.p Device Properties

 

Next step, i'll comment back the sata SSDT part cause it's already in the EFI string

2ndEDIT: Done and it works from EFI string only.

note: no more "Waiting for DSMOS..." message at boot for now.

 

3rdEDIT: I've adjusted the pata part for my needs and added a cosmetic test for this two:

 

Scope (_SB.PCI0) {

Device (MCHC) { Name (_ADR, Zero) }

Device (SBUS) { Name (_ADR, 0x001F0003) }

}

 

Now i have the same Ioreg as with chameleon2RC4 and my old dsdt.aml

Link to comment
Share on other sites

What do you think about page 510 of ICH9 datasheet, does desktop ICH9 support C3 and C4 ?

The "(Mobile Only)" part is a bit confusing yes. I can't however not check the ICH10 datasheet – not at this very moment because I am moving the actual HD – so you have to wait or clue me in. Is this "Mobile Only" note also part of the ICH10 datasheet or not?

Link to comment
Share on other sites

Not implemented.

I know that you are removing things to the boot loader, but this was the only thing that i was missing from Chameleon2RC4 and so i tried to add it myself and it worked!

So now i have a Revolution v3.1 i think that is working as before but with the SystemUUID patch by rekursor added.

Here you are the fake_efi.c I modified

fake_efi.c.zip

 

Now I have all working (except SBUS that I only renamed the device-id ) like with Chameleon2RC4 but with a faster and with less warning boot.

Link to comment
Share on other sites

 Share

×
×
  • Create New...