Jump to content

[Guide] Mac OSX 10.12 and 10.13 with X99 Broadwell-E family and Haswell-E family


nmano
 Share

1,954 posts in this topic

Recommended Posts

On January 9, I did the update for version 10.12.3 beta 3 (16D25a) post #976 and today I just did for 10.12.3 beta 4 (16D30a). Again, it was just say yes to update and wait for the system to restart. And again I did not have to mess with anything. The system starts the OS as if it were a real Mac Pro with everything running smoothly and perfect.

If someone wants my EFI, I'll post it here, but notice that it will only work well with Board, Processor and Graphics Card just like mine, since my DSDT and SSDT is specifically created and edited for that purpose. Even the FakeSMC was edited to my board's wifi card. Once again, a big, big thank you to this forum, especially to nmano for DSDT and PMheart for the special tips and secrets.  :D 
 

post-1313347-0-69155100-1484362240_thumb.png

post-1313347-0-19075200-1484362268_thumb.png

post-1313347-0-63937500-1484362285_thumb.png

post-1313347-0-12020200-1484362294_thumb.png

post-1313347-0-70832800-1484441257_thumb.png

  • Like 2
Link to comment
Share on other sites

SSDT Work without X99 USB 3_Injector

I tried to do this a long time ago but today I finally got a breakthrough.

Just drop SSDT-XHC2.AML  into EFI folder and add port limit patch in config.plist.

Happy New Year to you all and don’t forget to like my post!

Enjoy!

Works well so far.

 

Taking a look at the SSDT, I noticed you injected all of _SB.PCI0.XHCI.RHUB into _SB.PCI0.XHCI.XHCI. This seams a bit redundant, no? But, I guess... if it works... it works.

 

 

Thanks! I will check this out tomorrow and post the results :)

You can bypass the XHCI->XCH_ DSDT patch by... 

 

Using nmano's SSDT (remove all DSDT patches in config.plist and remove the uia-exclude=HSXX boot argument and remove kexts dealing with USB injection). 

 

Also, you will need this in your config.plist->KextsToPatch:

Name: AppleUSBXHCIPCI
Find: 83BD74FFFFFF10
Replace: 83BD74FFFFFF16
Comment: Change 15 Port Limit To 30 

post-1874416-0-56759500-1484418462_thumb.png

  • Like 1
Link to comment
Share on other sites

Small update: I'm no longer injecting my GPU into the DSDT, now I have it injected via SSDT. When loading into 10.12.2, I can now use the nvidiaweb flag (black screen with DSDT injection).

 

-Removed all instances of _SB.PCI0.BR3A.GFX0 and SB.PCI0.BR3A.D077, replace with H00Y and HDA1.

 

-Loaded GFX1 and HDAU via custom SSDT-BR3A.aml

post-1874416-0-06224100-1484429363_thumb.png

post-1874416-0-77532900-1484429367_thumb.png

post-1874416-0-75154300-1484429372_thumb.png

  • Like 1
Link to comment
Share on other sites

All righty! Done for now...
 
Here are some SSDTs for an Asus X99 Pro USB 3.1.
 
This is very similar to DSDT injection but with the "newer" SSDT injection. So if you want/need to edit something, you'll just need to disassemble/edit/save the SSDT, instead of disassemble/edit/compile/save the entire DSDT.
 
You will, however, need to utilize Clover config.plist DSDT patches for some devices!

 

If you'd like to create your own, please use my tool: ssdtGen(beta) (only support x99/z170 motherboards and will NOT make a custom SSDT-UIAC.aml)
 
Notes:
SSDT-ALZA.aml => Realtek Audio Controller. Works alongside AppleHDA.kext/AppleALC.kext/RealtekALC.kext.

SSDT-GFX1.aml => GFX1 and HDAU (audio) injection.

SSDT-EVSS.aml => AHCI (Advance Host Controller Interface) controller -- allows Hybrid or standard HDD devices to comm. w/ software. 
 
SSDT-GLAN.aml => Intel ethernet controller. Works alongside IntelMausiEthernet.kext
 
SSDT-HECI.aml => IMEI Controller (Intel Management Engine Interface) for various tasks while the system is booting, running or sleeping.

 

SSDT-LCP0.aml => Adds support to AppleLPC.kext for Low Pin Count devices to connect to the CPU

 
SSDT-NVMe-Pcc.aml => Spoofed NMVe. Works alongside HackrNVMeFamily_10_12_x.kext (in CLOVER->kexts->other). Should be OK as is if using same board, same OS version, and have a supported NVMe. If problems, create your own via my generic HackrNVMeFamily guide or Rehabman's HackrNVMe guide. Or remove it and the kext. No DSDT edit required.
 
SSDT-SAT1.aml => SATA Controller -- allows SSD devices to comm. w/ software.
 
SSDT-SMBS.aml => SMBUS (Sys. Mgnmt. Bus) -- comm. w/ power source (such as rechargeable batteries or external devices). 
 
SSDT-XHC2.aml => nmano's x99 XHCI USB controller. Should be OK as is.  Notes: Not compatible with all X99 chipsets. Removed. Use UIAC.aml below or nmano's X99 Injector USB3.kext. Follow this link for more information on how to use X99 Injector USB3.kext.
 
SSDT-UIAC.aml => Rehabman's x99 XHC USB 2.0/3.0 controller. Follow this link for more information on how to make your own.
 
SSDT-XHC.aml => Power options for your USB xHC ports.
 
SSDT-XOSI.aml => Simulated Windows _OSI methods.
 
SSDT.aml => Custom CPU power management. You can follow this (look at second to last note in my post) to generate your own.

  • Like 5
Link to comment
Share on other sites

Sorry fellas and/or ladies, it looks like I forgot to test Bluetooth. I used the wrong kexts and broke it.

 

Reuploaded EFI with working Bluetooth. Also added four new SSDTs (ALZA -- Realtek Audio Controller, EVSS -- AHCI Controller, RP04 -- Broadcom Wireless Network Adapter, and SAT1 -- SATA Controller) as well as an updated DSDT for the new SSDTs.

 

Notes:

++ Added BrcmFirmwareData.kext

++ Added BrcmPatchRAM2.kext

 

-- Removed BroadcomBluetooth.kext

-- Removed AHCIPortInjector.kext

-- Removed USB X99 Injector 3.kext

 

Testing done in 10.12.2:

✓ Audio over HDMI/DP 

✓ Bluetooth 

✓ CPU Power Management/Stepping

✓ Ethernet

✓ GPU recognition/usage

✓ NVMe recognition and R/W/E permissions

✓ Sleep

✓ USB 2.0, 3.0, 3.1 recognition/usage

✓ WIFI 2.4ghz/5ghz

  • Like 2
Link to comment
Share on other sites

Just saw this. I think the DSDT provided by another user might not be compatible with your system. 

 

Already ahead of you...

 

Try this EFI (modified DSDT from your "debug Mac Pro" folder above, includes SSDT-BR3A.aml for GPU and SDDT-XHCI.aml for USB injection).

 

Includes:

++ SSDT-BR3A.aml

++ SSDT-XHCI.aml

++ config.plist edits to work with SSDTs/DSDT

++ voodootsync for 6-core (should help with sleep issues)

 

Removed:

-- USBInjectAll.kext

-- XHCI-x99-injector.kext

 

Check if:

?? Graphics still loads

?? USB ports still work

?? CPU PM still works

?? Sleep still works

 

If not:

-- Remove SSDT-XHCI.aml 

-- Remove AppleUSBXHCIPCI from KextsToPatch

++ Add XHCI to XHC_ DSDT patch ==> Find: 58484349 Replace: 5848435F

++ Add USBInjectAll.kext,  XHCI-x99-injector.kext, add uia_exclude=HS07;HS08;HS09;HS10;HS12 boot args

 

Oh thank you :) Testing it right away!

 

Update:

First solution: results reboot on sleep. And buggy when insert on the usb ports.

Second solution: I can wake it from sleep but it freezes.

 

Dunno what to try.

Edited by jacoweb
Link to comment
Share on other sites

DSDT all in one patched.

#XHCI worked well with out any USB_Injector.

Thank god Its worked  DSDT regular patchs.

post-413859-0-02608900-1484673115_thumb.png

Archive.zip

  • Like 2
Link to comment
Share on other sites

Oh thank you :) Testing it right away!

 

Update:

First solution: results reboot on sleep. And buggy when insert on the usb ports.

Second solution: I can wake it from sleep but it freezes.

 

Dunno what to try.

Stick with second solution and find out what causes it to freeze. Impossible for me to know since I don't have your board and can't test it.

Link to comment
Share on other sites

Yep :)

Taking a more in-depth look at your USB structure via IOReg... Your USB ports are laid out a bit different than ours. 

 

Mine:

PCI0.EH01

PCI0.EH02

PCI0.RP05

PCI0.XHCI

 

Yours:

PCI0.BR1B

PCI0.EHC1

PCI0.EHC2

PCI0.XHC(I)

 

But most of your useable ports are nested inside XHC(I), so not sure why you're getting issues. If I had to guess, it might just something simple like a device ID change (everything else looks pretty much the same).

Link to comment
Share on other sites

Taking a more in-depth look at your USB structure via IOReg... Your USB ports are laid out a bit different than ours. 

 

Mine:

PCI0.EH01

PCI0.EH02

PCI0.RP05

PCI0.XHCI

 

Yours:

PCI0.BR1B

PCI0.EH01

PCI0.EH02

PCI0.XHC(I)

 

But most of your useable ports are nested inside XHC(I), so not sure why you're getting issues. If I had to guess, it might just something simple like a device ID change (everything else looks pretty much the same).

I tried your SSDT-XHC2 removing my x99_USB3_injector kext and leaving only kext patch about port number, but USB ports don't work....i've an x99 deluxe II so it's similar to your mainboard and there shouldn't be compatibility problems but i'm not able to work USB with SSDT only....same for graphics. I've a GTX 680 and i tried to create SSDT to rename GFX1 following shilooh's guide but my GPU is not renamed

Link to comment
Share on other sites

I tried your SSDT-XHC2 removing my x99_USB3_injector kext and leaving only kext patch about port number, but USB ports don't work....i've an x99 deluxe II so it's similar to your mainboard and there shouldn't be compatibility problems but i'm not able to work USB with SSDT only....same for graphics. I've a GTX 680 and i tried to create SSDT to rename GFX1 following shilooh's guide but my GPU is not renamed

Attach your working EFI folder with dumped .amls in the origin and an IOReg dump. I think I might know what to do...

  • Like 2
Link to comment
Share on other sites

So.... I also start now with DSDT patching..... but first a very fundamental problem.

 

I dump my DSDT.aml with clover, I open with MaciASL, compile..... I get 19 Error and 22 Warnings.....

 

not a good start for DSDT editing..... any guidance to how to get a error free initial clean version?

 

Thanks, Mike

Link to comment
Share on other sites

So.... I also start now with DSDT patching..... but first a very fundamental problem.

 

I dump my DSDT.aml with clover, I open with MaciASL, compile..... I get 19 Error and 22 Warnings.....

 

not a good start for DSDT editing..... any guidance to how to get a error free initial clean version?

 

Thanks, Mike

What version of MaciASL are you running? What version of iasl are you running?

 

Also, we only want DSDT.aml, (not DSDT-0.aml or any other name) and SSDT-0.aml, SSDT-1.aml...etc. 

 

If you're not sure, then follow my guide on how to install the latest of both: http://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/page-37?do=findComment&comment=2343228

  • Like 1
Link to comment
Share on other sites

I use Rehabmans version of Maciasl with ACPI 6.1

Compiler version is 20160422-64

 

Also tried the latest MaciASL 1.4 with ACPI 5.0

 

Similar results with both.

 

I attached my extracted DSDT.aml file.

 

Can you verify please?

 

Thanks, Mike

No errors on my end (included DSDT.dsl in file below)...

Ranger-DSDT.zip

Link to comment
Share on other sites

So this is the log I get when compiling the decompiled dsl again.

I really do not understand why I get all these errors, I installed the latest compiler as advised and the latest MacIasl from Rehabman.

 

Really confused.

 

Thanks, Mike 

18.01.17, 23:44:04, Intel ACPI Component Architecture
18.01.17, 23:44:04, ASL+ Optimizing Compiler version 20161222-64(RM)
18.01.17, 23:44:04, Copyright (c) 2000 - 2017 Intel Corporation
18.01.17, 23:44:04, Intel ACPI Component Architecture
18.01.17, 23:44:04, ASL+ Optimizing Compiler version 20161222-64(RM)
18.01.17, 23:44:04, Copyright (c) 2000 - 2017 Intel Corporation
18.01.17, 23:44:33, iASL6JaSTo.dsl(122) : warning  3144 - Method Local is set but never used (Local0)
18.01.17, 23:44:33, iASL6JaSTo.dsl(378) : warning  3144 - Method Local is set but never used (Local0)
18.01.17, 23:44:33, iASL6JaSTo.dsl(2758) : warning  3144 - Method Local is set but never used (Local1)
18.01.17, 23:44:33, iASL6JaSTo.dsl(2811) : error    6086 - Not a control method, cannot invoke (PRID is a BufferField)
18.01.17, 23:44:33, iASL6JaSTo.dsl(2811) : error    6058 - Invalid type (Target is [Package], Source must be a package also)
18.01.17, 23:44:33, iASL6JaSTo.dsl(2816) : error    6086 - Not a control method, cannot invoke (PRID is a BufferField)
18.01.17, 23:44:33, iASL6JaSTo.dsl(15675) : warning  3115 - Not all control paths return a value (_OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(15675) : warning  3107 - Reserved method must return a value (Buffer required for _OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(15880) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(16825) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(17038) : warning  3129 - ResourceTag smaller than Field (Size mismatch, Tag: 1 bit, Field: 8 bits)
18.01.17, 23:44:33, iASL6JaSTo.dsl(17295) : warning  3144 - Method Local is set but never used (Local0)
18.01.17, 23:44:33, iASL6JaSTo.dsl(17337) : warning  3144 - Method Local is set but never used (Local0)
18.01.17, 23:44:33, iASL6JaSTo.dsl(23927) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(24564) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(25206) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(25843) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(26480) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(27122) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(27759) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(28396) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(29033) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(29675) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(30944) : warning  3115 - Not all control paths return a value (_OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(30944) : warning  3107 - Reserved method must return a value (Buffer required for _OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(31290) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(31299) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(31306) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(31313) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(31318) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(31325) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(31526) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(32149) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(32772) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(33395) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(34018) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(34641) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(35264) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(35887) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(36510) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(37133) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(37756) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(38281) : warning  3115 - Not all control paths return a value (_OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(38281) : warning  3107 - Reserved method must return a value (Buffer required for _OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(38627) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(38636) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(38643) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(38650) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(38655) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(38662) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(38863) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(39486) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(40109) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(40732) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(41355) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(41978) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(42601) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(43224) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(43847) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(44470) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(45093) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(45618) : warning  3115 - Not all control paths return a value (_OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(45618) : warning  3107 - Reserved method must return a value (Buffer required for _OSC)
18.01.17, 23:44:33, iASL6JaSTo.dsl(45964) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(45973) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(45980) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(45987) : error    6051 - Address Min is greater than Address Max
18.01.17, 23:44:33, iASL6JaSTo.dsl(45992) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(45999) : warning  3090 - Min/Max/Length/Gran are all zero, but no resource tag
18.01.17, 23:44:33, iASL6JaSTo.dsl(46200) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(46823) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(47446) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(48069) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(48692) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(49315) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(49938) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(50561) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(51184) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(51807) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(52430) : warning  3023 - Duplicate value in list (Source is the same as Target)
18.01.17, 23:44:33, iASL6JaSTo.dsl(53204) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(53285) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(53676) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(53771) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(53884) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(53901) : warning  3124 - Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer
18.01.17, 23:44:33, iASL6JaSTo.dsl(54520) : warning  3079 - _REG has no corresponding Operation Region
18.01.17, 23:44:33, iASL6JaSTo.dsl(56779) : warning  3115 - Not all control paths return a value (_E10)
18.01.17, 23:44:33, iASL6JaSTo.dsl(56832) : warning  3115 - Not all control paths return a value (TINI)
18.01.17, 23:44:33, iASL6JaSTo.dsl(56851) : warning  3115 - Not all control paths return a value (TWAK)
18.01.17, 23:44:33, iASL6JaSTo.dsl(56936) : warning  3115 - Not all control paths return a value (TPTS)
18.01.17, 23:44:33, iASL6JaSTo.dsl(57363) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57377) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57392) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57407) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57421) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57436) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, iASL6JaSTo.dsl(57451) : warning  3130 - Result is not used, possible operator timeout will be missed
18.01.17, 23:44:33, ASL Input:     iASL6JaSTo.dsl - 57670 lines, 1968047 bytes, 28131 keywords
18.01.17, 23:44:33, Compilation complete. 12 Errors, 86 Warnings, 258 Remarks, 7956 Optimizations
Link to comment
Share on other sites

:frantics: Compile result before fixes:
qziRVKd.png
 
****************
* ... ERRORS ...   *
**************
 
:excl: These errors are decompiler errors (syntax related):


error 6086 - Not a control method, cannot invoke (PRID is a BufferField)
error 6058 - Invalid type (Target is [Package], Source must be a package also)

Problem:


                If (LEqual (CSTA (Arg0, Arg1), 0x00))
                {
                    Store (0x00, FLAG)
                    Store (0xFF, PRID (Store (0xFF, APID)))
                }
                Else
                {
                    Store (APID, Local0)
                    Store (Local0, PRID (Store (0x01, FLAG)))
                }

Fix:


                If (LEqual (CSTA (Arg0, Arg1), 0x00))
                {
                    Store (0x00, FLAG)
                    Store (0xFF, PRID)
                    Store (0xFF, APID)
                }
                Else
                {
                    Store (APID, Local0)
                    Store (Local0, PRID)
                    Store (0x01, FLAG)
                }

---
 
:excl: These errors have to do with the undefined max range addresses in P1RS, P2RS, and P3RS (and P0RS):

error - Address Min is greater than Address Max
warning - Min/Max/Length/Gran are all zero, no resource tag

Fixes:
Find P1RS and fix the min/max/length addresses as noted below, then repeat for P2RS, and then repeat P3RS (*NOTE, the addresses for P1RS/P2RS/P3RS in Dword, WordIO, etc may be different from each other, so you won't have to change the first three digits, but just the last (see below for an example). Also some may even already have a min of xx59, but just follow the same pattern: min: xx58, max: xx59 and length: 0002 or 000001.
 
For example P1RS (do not touch anything aside from the categories below!):
Under DWordMemory:


0x00000001,         // Length

Under WordIO (1 of 3):


0x4158,             // Range Minimum
0x4159,             // Range Maximum

0x0002,             // Length

Under WordIO (2 of 3):


 0x5758,             // Range Minimum
 0x5759,             // Range Maximum

 0x0002,             // Length

Under WordIO (3 of 3):


0x5858,             // Range Minimum
0x5859,             // Range Maximum

0x0002,             // Length

Under DwordMemory:


 0x00000001,         // Length

Under QwordMemory:


0x0000000000000001, // Length

---
 
And lastly find P0RS (again, do not touch anything else aside from the category below):
Under QWordMemory

 0x0000000000000001, // Length

 
****************
* ... Warnings ... *
 **************

:excl: This warning is basically stating that a method/function has an IF statement, that when false, won't return anything:

Not all control paths return a value (_OSC/O1EX/TINI/TWAK...etc)
Reserved Method must return a value (Buffer required for _OSC)

Sample Problem:

      Method (_TINI, 0, NotSerialized)
      {            
          If (LEqual (Arg0, ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
          {
              (bunch of code here that'll get executed if the above IF statement returns true)
          }
      }

Fix ( adding a Return (Zero) before the method closes ):


      Method (TINI, 4, Serialized)
      {            
          If (LEqual (Arg0, ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
          {
              (bunch of code here that'll get executed if the above IF statement returns true)
          }
          Return (Zero)
      }

----
 
:excl: This warning has to deal with incorrect/unused method names:

Invalid object type for reserved name (_OSC: found Integer, Buffer Required)

Problem:


   Method (_OSC, 4, Serialized)  // _OSC: Operating System Capabilities
   {

Fix ( remove underscore "_" or rename "XOSC" ):


   Method (XOSC, 4, Serialized)  // _OSC: Operating System Capabilities
   {

----
 
:excl: This warning has to deal with a decompiler mistake:

Duplicate Value in List (Source is the same as Target)

Problem:


                Method (OSHP, 0, NotSerialized)
                {
                    Store (SSTS, SSTS)
                    Store (0x00, HGPE)
                }

Fix ( add quotes to first "SSTS" ):



                Method (OSHP, 0, NotSerialized)
                {
                    Store ("SSTS", SSTS)
                    Store (0x00, HGPE)
                }

----
 
:excl: This warning has to deal with an unused operator:

Result is not used, possible operator timeout will be missed

Problem:


Acquire (MUTE, 0x03E8)

Fix ( replace address with 0xFFFF ):



Acquire (MUTE, 0xFFFF)

----
:excl: This warning has to deal with a mismatch ResourceTag length:

ResourceTag smaller than Field (Size mismatch, Tag: X, Field: X bits) 

Sample Problem ( example below is Tag: 1 bit, Field: 8 bits :

CreateByteField (CRS3, \_SB.PCI0.LPC0.SIO1._Y0D._HE, IRQS)  // _HE_: High-Edge

Fix ( depending on the size Tag mismatch: 1 bit = CreateBitField, 8 bits = CreateByteField, 16 bits = CreateWordField, 32 bits = CreateDwordField, 64 bits = CreateQwordField )  :



CreateBitField (CRS3, \_SB.PCI0.LPC0.SIO1._Y0D._HE, IRQS)  // _HE_: High-Edge

----
 
:excl: This warning has to deal with the switch variable not being defaulted to an Integer:

Switch expression is not a static Integer/Buffer/String data type, default to integer

Problem:


            Method (WMBC, 3, Serialized)
            {
                Store (0x01, Local0)
                Switch (Arg1)
                {
                    Case (0x43455053)

Fix (add Switch(ToInteger (XXXX)) ):


            Method (WMBC, 3, Serialized)
            {
                Store (0x01, Local0)
                Switch (ToInteger (Arg1))
                {
                    Case (0x43455053)

----
:excl: This warning has to deal with an unset method local variable:

Method Local is set, but never used (Local 0)

Problem:

        Store (0x03, OSVR)
        If (CondRefOf (\_OSI, Local0))
        {
            If (_OSI ("Windows 2001"))

or

                            Store (RGE3, PMFG)
                            Store (RGE3, Local0)
                            And (RGE0, 0x9F, RGE0)

Fix And(Local0, Ones, Local0) ==> Local 0 set to 0x11111111 ):

        Store (0x03, OSVR)
        If (CondRefOf (\_OSI, Local0))
        {
            And(Local0, Ones, Local0)
            If (_OSI ("Windows 2001"))

or

                            Store (RGE3, PMFG)
                            Store (RGE3, Local0)
                            And(Local0, Ones, Local0)
                            And (RGE0, 0x9F, RGE0)

----

 

:guitar: Compile results after fixes:

fmNGgQE.png

  • Like 6
Link to comment
Share on other sites

Wow.... thank you very much.... I need to analyse your post a bit more but I think that will get me going.

 

Cheers, Mike

Updated my post above for fixes. Should be straight forward.

Link to comment
Share on other sites

Try the EFI folder first (graphics should work, USBs are a question mark, and didn't touch Thunderbolt)...

 

only if it doesn't work, swap the DSDT.aml in the zip below inside EFI-CLOVER-ACPI->patched and try again.

After work i will try and report to you..thanks

Link to comment
Share on other sites

 Share

×
×
  • Create New...