Jump to content

DSDT fixes for Gigabyte boards


iSoprano
 Share

1,909 posts in this topic

Recommended Posts

Thanks. Are you using aluminum keyboard too and yours is working? hhhmm pulled out my old keyboard to test and it's working on wake up so i'm back again at square one haha.

 

i still believe there's something on the new restart fix since without using it everything is normal (shutdown, aluminum kb wake except restart w/o a kext)

 

mm67 u there? : D

 

as for auto sleep, i've given up on that too and i'm so relieve that it works - at first i thought my hack just suddenly died hehe..

 

Try this after boot, before first sleep:

sudo setpci -s 0:1d.7 0x52.w

 

If the patch is working you should get c802 as result

 

BTW I seem to have the first quad core iMac10,1 :)

http://browse.geekbench.ca/geekbench2/chart/198195

Link to comment
Share on other sites

And Ehci controller is seen as built-in like this ?

 

YES :)

 

post-345318-1261248588_thumb.png

 

Then I am running out of ideas.

 

Thanks for trying though.. if it helps this is my original DSDT from 10.5.6

 

ES2L_10.5.6_dsdt.dsl.zip

 

i'm giving up on the FADT/boot restart fix for now and hoping for the DSDT fix instead (if possible).. to all dsdt gurus, don't get drunk too much this coming holiday season okey- we need you here hehe : D

Link to comment
Share on other sites

I included both the boot file which is based on the latest Chameleon RC4 and a FADT.aml that should get you started. the aml file should work on all Gigabyte EP45 boards....

Hi Duvel300

 

Your modified RC4 boot file and FADT.aml work perfectly for me. Thank you very much :angel:

Link to comment
Share on other sites

I had been using Rekursors modified Chameleon RC4 boot file for the system-id patch, and now that Duvel300 has fixed restart for us with his modified Chameleon RC4 boot file, I wanted to use that.

 

So for the best of both, I have compiled a new RC4 boot file with both fixes.

boot_RC4_Duvel_Rekursor.zip

 

Note: This modified boot file is no longer and original Chameleon file. If you have any issues using it (which you shouldn't), don't ask for help at the voodooprojects forum. Just revert back to your original boot file and see if the problem exists with that.

 

EDIT: this has now been superceded by a later version here.

Link to comment
Share on other sites

I spoke too soon!

 

PROBLEM:

 

when using cparm's FADT.aml and Duvel300 RC4 boot, wake from aluminum keyboard is not working? shutdown and YES automatic sleep seems to be working too (not on time though but it works)..

 

tested it a few times already but didn't tried cparm's PC EFI boot yet since my UUID error 35 will be back.. any ideas?

edit:

 

deauthorize my 2 iTunes account just to be sure and tested cparm's PC EFI - restart works as expected but wake from aluminum keyboard also wont work, the same as Duvels RC4..

 

wohoo! :censored2: can't believe i fixed it - turns out that it's not the "boot" that's the problem but it's FADT that i copied from cparm..

 

after comparing cparm,duvel and my FACP and saw a lot of difference decided to create my own using Hex Fiend (osx)..

 

changed the ff - dont know though if the other changes are important but i just copied what's in my FACP..

 

- PM Profile

- PM2 Control Block Address

- GPE0 Block Address

- PM2 Control Block Length

- GPE0 Block Length

- C2 & C3 latency

- FACS Address

- Address

 

NOW - wake from aluminum KB is back! :P Also anyone can please PLEASE check the FADT i made, i'm a noobie when it comes to this so i'm afraid i changed something that i will regret later. Lastly - what did the trick to make my aluminum keyboard work again, a lot of changes but dont know their meaning!

 

FADT.zip

Link to comment
Share on other sites

You guys have done some good work here, but I think it's turning into a pissing contest. Why not get together and make something great out of this. I don't mean to sound ungrateful I just lack the skills that some of you have. I am however good at following direction I'm just not sure which way this is going.

 

Thanks for Everything!

Link to comment
Share on other sites

I went one step further and converted my FADT table into this:

static uint32_t FADT_table[] = {
/* 0000 */ 0x50434146, 0x000000F4, 0x5F41CD03, 0x5F495F4D,
/* 0010 */ 0x464D454F, 0x20504341, 0x12000816, 0x5446534D,
/* 0020 */ 0x00000097, 0xCFF8E000, 0xCFF80440, 0x00090101,
/* 0030 */ 0x000000B2, 0xE2001EE1, 0x00000800, 0x00000000,
/* 0040 */ 0x00000804, 0x00000000, 0x00000000, 0x00000808,
/* 0050 */ 0x00000820, 0x00000000, 0x04000204, 0xE3000010,
/* 0060 */ 0x03E90065, 0x00100400, 0x000D0001, 0x00000332,
/* 0070 */ 0x000004A5, 0x00000801, 0x00000CF9, 0x00000000,
/* 0080 */ 0x00000006, 0xCFF8E000, 0x00000000, 0xCFF80440,
/* 0090 */ 0x00000000, 0x00002001, 0x00000800, 0x00000000,
/* 00A0 */ 0x00002001, 0x00000000, 0x00000000, 0x00001001,
/* 00B0 */ 0x00000804, 0x00000000, 0x00000000, 0x00000000,
/* 00C0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
/* 00D0 */ 0x00002001, 0x00000808, 0x00000000, 0x00008001,
/* 00E0 */ 0x00000820, 0x00000000, 0x00002001, 0x00000000,
/* 00F0 */ 0x00000000    
};

Which is now part of my dsdt_patcher.c and thus I can simply point to it, instead of loading a file. Seems a bit quicker this way. Saying goodbye to another useless file :)

 

Anyway. I am also planning to do the same with my DSDT.aml – which is less than 2K these days, so it should be fine. Hey. It would be nice (awesome even) if someone could write a little script to convert files (hopefully during my sleep period).

 

p.s. Only do/try this when everything works for you. After you have patched your table.

Link to comment
Share on other sites

many thanks !!!

 

my patched fadt.aml =>

 

PM2 Control Block Length changed from 01 to 00

 

cparm,

Thank you for sharing your patched fadt.aml

I have a GA-P35-DS3 Mobo so I am not sure whether I can use your patch fadt.aml.

I like to patch my fadt.aml but not sure how to extract the fadt.aml for my Mobo.

Would apprecaite if can provide a guide on how to extract fadt.aml?

TQ and have a nice day.

Link to comment
Share on other sites

I went one step further and converted my FADT table into this:
static uint32_t FADT_table[] = {
/* 0000 */ 0x50434146, 0x000000F4, 0x5F41CD03, 0x5F495F4D,
/* 0010 */ 0x464D454F, 0x20504341, 0x12000816, 0x5446534D,
/* 0020 */ 0x00000097, 0xCFF8E000, 0xCFF80440, 0x00090101,
/* 0030 */ 0x000000B2, 0xE2001EE1, 0x00000800, 0x00000000,
/* 0040 */ 0x00000804, 0x00000000, 0x00000000, 0x00000808,
/* 0050 */ 0x00000820, 0x00000000, 0x04000204, 0xE3000010,
/* 0060 */ 0x03E90065, 0x00100400, 0x000D0001, 0x00000332,
/* 0070 */ 0x000004A5, 0x00000801, 0x00000CF9, 0x00000000,
/* 0080 */ 0x00000006, 0xCFF8E000, 0x00000000, 0xCFF80440,
/* 0090 */ 0x00000000, 0x00002001, 0x00000800, 0x00000000,
/* 00A0 */ 0x00002001, 0x00000000, 0x00000000, 0x00001001,
/* 00B0 */ 0x00000804, 0x00000000, 0x00000000, 0x00000000,
/* 00C0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
/* 00D0 */ 0x00002001, 0x00000808, 0x00000000, 0x00008001,
/* 00E0 */ 0x00000820, 0x00000000, 0x00002001, 0x00000000,
/* 00F0 */ 0x00000000    
};

Which is now part of my dsdt_patcher.c and thus I can simply point to it, instead of loading a file. Seems a bit quicker this way. Saying goodbye to another useless file :rolleyes:

 

Anyway. I am also planning to do the same with my DSDT.aml – which is less than 2K these days, so it should be fine. Hey. It would be nice (awesome even) if someone could write a little script to convert files (hopefully during my sleep period).

 

p.s. Only do/try this when everything works for you. After you have patched your table.

 

Would you mind posting your updated version of dsdt_patcher.c? Thanks.

Link to comment
Share on other sites

Hi, i tried to fix my DSDT using this thread but after several attempts i gave it up. There are those fixed DSDT's, where you don't know WHICH part is HOW fixed and WHAT it does. And when i tried to read all that geeky replies i was more confused than before. Maybe after a month of googling and studying all that stuff i would be able to make it but as an ordinary person i have no chance!

Sorry for my English :(

BTW: Example of nice DSDT guide: http://aserebln.blogspot.com/2009/07/20.html only a basic stuff i know but everything is explained and it's nice, step by step.

Link to comment
Share on other sites

Hi All, after releasing my restart fix I noticed that modifying the "FADT.aml" might not that easy for all us. I came up with a much cleaner solution that will eliminate the FADT.aml file all together. The boot loader will actually patch your own FADT with the information needed for a successful restart. The 'com.apple.Boot.plist' will have to be updated and will need to contain the following key: 'RestartFix=YES'

 

<key>RestartFix</key>
<string>YES</string>

 

And copy the included boot loader to your OSX root. It is patched for both ACPI 1.0 and 2.0. I don't have a ACPI 2.0 board so I couldn't test this.

 

Good luck! I hope it works for everyone!

RestartFix_v2.1.zip

Link to comment
Share on other sites

Hi All, after releasing my restart fix I noticed that modifying the "FADT.aml" might not that easy for all us. I came up with a much cleaner solution that will eliminate the FADT.aml file all together. The boot loader will actually patch your own FADT with the information needed for a successful restart. The 'com.apple.Boot.plist' will have to be updated and will need to contain the following key: 'RestartFix=YES'

 

<key>RestartFix</key>
<string>YES</string>

 

And copy the included boot loader to your OSX root. It is patched for both ACPI 1.0 and 2.0. I don't have a ACPI 2.0 board so I couldn't test this.

 

Good luck! I hope it works for everyone!

Thinking out loud here. Would it be better if it was enabled by default and required users to turn if off if they didn't want it? It seems more people have this problem than don't.
Link to comment
Share on other sites

Thinking out loud here. Would it be better if it was enabled by default and required users to turn if off if they didn't want it? It seems more people have this problem than don't.

 

Sure, I was thinking about that as well, then again I wasn't (still am) sure if the fix will not cause any problems. When it proves to work properly I will update this.

 

 

It works but now GraphicsEnabler doesn't. Any way to fix it?

 

Hrmm... that's weird. The changes I made have nothing to do with portion of the code that controls the GraphicsEnabler. Were you using the Chameleon RC04 boot loader before or the PC-EFI version?

 

EDIT: Sorry, I had to update the code, a new version can be downloaded from post 916. Let me know how it works out.

Link to comment
Share on other sites

Much cleaner this way, but I am getting a bunch of errors:

 

dsdt_patcher.c:245: error: ‘struct acpi_2_fadt’ has no member named ‘Flags’

dsdt_patcher.c:246: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_SpaceID’

dsdt_patcher.c:247: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitWidth’

dsdt_patcher.c:248: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitOffset’

dsdt_patcher.c:249: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_AccessWidth’

dsdt_patcher.c:250: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Address’

dsdt_patcher.c:251: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Value’

dsdt_patcher.c:357: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_SpaceID’

dsdt_patcher.c:358: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitWidth’

dsdt_patcher.c:359: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitOffset’

dsdt_patcher.c:360: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_AccessWidth’

dsdt_patcher.c:361: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Address’

dsdt_patcher.c:362: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Value’

dsdt_patcher.c:131: warning: unused variable ‘facp_filename’

Link to comment
Share on other sites

Much cleaner this way, but I am getting a bunch of errors:

 

dsdt_patcher.c:245: error: ‘struct acpi_2_fadt’ has no member named ‘Flags’

dsdt_patcher.c:246: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_SpaceID’

dsdt_patcher.c:247: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitWidth’

dsdt_patcher.c:248: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitOffset’

dsdt_patcher.c:249: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_AccessWidth’

dsdt_patcher.c:250: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Address’

dsdt_patcher.c:251: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Value’

dsdt_patcher.c:357: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_SpaceID’

dsdt_patcher.c:358: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitWidth’

dsdt_patcher.c:359: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_BitOffset’

dsdt_patcher.c:360: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_AccessWidth’

dsdt_patcher.c:361: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Address’

dsdt_patcher.c:362: error: ‘struct acpi_2_fadt’ has no member named ‘Reset_Value’

dsdt_patcher.c:131: warning: unused variable ‘facp_filename’

 

Hey MC, first of all make sure you use the latest version I just posted, it was overwriting certain offset that it shouldn't.

you will need the following file which I forgot to include:

acpi.h.zip

Link to comment
Share on other sites

Thinking out loud here. Would it be better if it was enabled by default and required users to turn if off if they didn't want it? It seems more people have this problem than don't.

I second that.

 

A new flag to specify the ACPI version would also be a nice addition. A plus would be if this flag could be set, automatically, after the first boot. I mean why do all ACPI 2.0 boards have to crawl through 1.0 code and vise versa?

Link to comment
Share on other sites

Hi All, after releasing my restart fix I noticed that modifying the "FADT.aml" might not that easy for all us. I came up with a much cleaner solution that will eliminate the FADT.aml file all together. The boot loader will actually patch your own FADT with the information needed for a successful restart. The 'com.apple.Boot.plist' will have to be updated and will need to contain the following key: 'RestartFix=YES'

 

<key>RestartFix</key>
<string>YES</string>

 

And copy the included boot loader to your OSX root. It is patched for both ACPI 1.0 and 2.0. I don't have a ACPI 2.0 board so I couldn't test this.

 

Good luck! I hope it works for everyone!

Great job!

 

Still I wanna keep both features(restart fix in plist and FADT table load) since there are more that can be fixed in table...

Also f someone can add SSDT, SSDT-1 and so would be great, I hate to spam my DSDT with fixes for that...

Well better will be if we can replace other tables also :(

 

Thanks!

Link to comment
Share on other sites

Hey MC, first of all make sure you use the latest version I just posted, it was overwriting certain offset that it shouldn't.

you will need the following file which I forgot to include:

I was about to ask for it yes. Thanks :(

 

Edit: Problem solved. And... I changed the following code snippet:

						if (fadt->Length < 0x81 && FixRestart)
					{
						fadt_mod=(struct acpi_2_fadt *)AllocateKernelMemory(0x81); 
						memcpy(fadt_mod, fadt, fadt->Length);
						fadt_mod->Length = 0x81;
					}
					else
					{														
						fadt_mod=(struct acpi_2_fadt *)AllocateKernelMemory(fadt->Length); 
						memcpy(fadt_mod, fadt, fadt->Length);
					}

					if (FixRestart)
					{
						fadt_mod->Flags|= 0x400;
						fadt_mod->Reset_SpaceID		= 0x01;
						fadt_mod->Reset_BitWidth	= 0x08;
						fadt_mod->Reset_BitOffset	= 0x00;
						fadt_mod->Reset_AccessWidth = 0x01;
						fadt_mod->Reset_Address		= 0x0cf9;
						fadt_mod->Reset_Value		= 0x06;
					}	

The one for ACPI 2.0 into:

						fadt_mod=(struct acpi_2_fadt *)AllocateKernelMemory(fadt->Length); 
					memcpy(fadt_mod, fadt, fadt->Length);

					if (FixRestart)
						fadt_mod->Flags|= 0x400;

But I am thinking of checking Flags and patch it when needed (based on the value). The reason for this is that the reset register is missing in ACPI 1.0 tables, while my ACPI 2.0 table just uses a wrong value for Flags. That is all.

 

What do you think?

Link to comment
Share on other sites

 Share

×
×
  • Create New...