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

As always our intention is to optimize and improve the systems and I was doing tests with two freqvectors.kexts (thakns PMHeart) with different freqvectors (14,2), (17,1) and without freqvectors loaded in my macpro6,1 and strangely also works well too without any kext loaded :yes: 

I no longer use freqVectorsEdit.sh from Pike.
The result is in the prints below.
I did not test performance, so I do not know if it changes anything.
What is your opinion and which of the results do you think is better? ^_^ 

post-1313347-0-93660800-1490217113_thumb.png

post-1313347-0-23245800-1490217121_thumb.png

post-1313347-0-93407400-1490295516_thumb.png

  • Like 2
Link to comment
Share on other sites

Hi Fergarth, thank you for your constant testing! :-)

This two pictures in my opinion are pretty similar, for me, the best result should be where you have in this conditions best performance and less wattage usage (so low temperatures)

Always I think it is useful to post your two patches so people can compare with your results

In my case to achieve C3 visible states in output I have to program msr 0xE2 as user sammlerG taught us in a old post

Hi Fabio,

Yes it´s true, the difference between both vectors is minimal and consumption has remained the same. To have C3 in the output, I just need to use two patches and are these:

 

<dict>

    <key>Comment</key>

    <string>XCPM PKG Scope MSRS Wichtig © Pike R. Alpha</string>

    <key>Disabled</key>

    <false/>

    <key>Find</key>

    <data>

    vgcAAAAx0uiU/P//

    </data>

    <key>MatchOS</key>

    <string>10.12.x</string>

    <key>Replace</key>

    <data>

    vgcAAAAx0pCQkJCQ

    </data>

   </dict>

 

<dict>

    <key>Comment</key>

    <string>XCPM Bootstrap Sierra © Pike R. Alpha</string>

    <key>Disabled</key>

    <false/>

    <key>Find</key>

    <data>

    g8PEg/si

    </data>

    <key>MatchOS</key>

    <string>10.12.x</string>

    <key>Replace</key>

    <data>

    g8PBg/si

    </data>

   </dict>

 

But to have the maximum GBench performance i also need this one:

 

<dict>

    <key>Comment</key>

    <string>XCPM Performance Fix 1 © Okrasit</string>

    <key>Disabled</key>

    <false/>

    <key>Find</key>

    <data>

    idjB4Ai5mQE=

    </data>

    <key>MatchOS</key>

    <string>10.12.x</string>

    <key>Replace</key>

    <data>

    uAD/AAC5mQE=

    </data>

   </dict>

 

So these are the three patches that I currently use. XCPM works perfectly well as you can see in the prints above.

Link to comment
Share on other sites

@PMheart Yes it is so, because if you try to change msr 0xe2 on an unlocked bios in best case nothing happen, in worst case you have a kp!

 

So why not unlock your BIOS immediately!  :wink_anim:

 

=============================

 

BTW. For your another question at here, sorry I forgot to reply last weekend... And now the answer is here: (Sorry again)

 

Regarding to Reboot Fix #1. This opcode is under routine '_xcpm_perf_bias_set', which prevents unsupported MSRs that causes an immediate reboot from loading.

 

Regarding to Reboot Fix #2. Oops! It's my fault. (I found that when disassembling just now... :P) The target offset is the same... Sorry. I dunno why I can make such a stupid fault as well! So just keep one of them.

  • Like 1
Link to comment
Share on other sites

@PMheart Yes it is so, because if you try to change msr 0xe2 on an unlocked bios in best case nothing happen, in worst case you have a kp!

@Fergarth

Do you need of oarksit performance fix patch also if you have in your bios speedstep disabled?

In my system I have EIST enabled cause i am using windows as primary system

But if i disabled it i have full boost speed with gb and similar also without using that patch

 

Ps i don't use in it ff parameter but 25 because 25 means 37 in decimal terms which is my maximun turbo steps for two cores

Yes I have always had Bios with EIST disabled. But in the result of IntelnIfo appears as active... I remember that in times the nmano used a patch that showed EIST deactivated (?) in Intelinfo, but I can not remember which one...

Without the Performance Fix 1 © Okrasit patch, I have the Idle most regular and always close to the 1.20 GHz but less about 4K in the GB...

  • Like 1
Link to comment
Share on other sites

Thank you PMHeart

I do not lock bios immediately because I like to test global reboot fix (pikeralpha) you can find in my thread

With my three different motherboard (one of them dual cpu motherboard with xeon 2696V4) if I use only reboot fix and fakecpuid and oarksit performance fix if EIST is enabled in bios, I have same temperature and C6 C states in output with same wattage usage (bios locked)

 

with bios unlocked I can program msr 0xe2 and in this way I can see in appleintelinfo output all C3 states

In real test and usage I have same performance ,wattage and temperatures in both or all way I patched (see my thread for four different solutions plus one you adviced me)

So, maybe  differences are in xeon processor?

Well, I see your purposes.

I think we should block MSRs as few as possible, like Pike said.

IDK, but IMHO maybe XCPM will not even recognize your CPU model? (Cuz it doesn't have to do so.)

  • Like 1
Link to comment
Share on other sites

How can I verify your last assertion?

I can see all states and steps during test and normal usage and testing program recognize my cpu as E5 Xeon 2696 V4 /22 cores/ 44 threads)

If XCPM really needs your detailed CPU model, and then it will have more work to do, but actually this is utterly unnecessary.

I think it just got your 22C 44T and provide power management for them. Also note that Apple hasn't used this CPU yet.

 

Anyway, if XCPM surely needs to recognize certain CPUs, then Apple will do a lot of work after release each CPU for its Macs...

  • Like 1
Link to comment
Share on other sites

Apple has not used

 

 

Apple has not used any new powerful xeon greater than 2697 V2 (socket 2011 12 cores + 12 threads), maybe now they will surprise us with a new ryzen or maby v4 / v5 xeon..but I don't think so

It seems they are more bul{censored} oriented now! :-)

You have to keep the hope until the release of the final version of Sierra 12.4 or later with MacOS Emoji 10.13 ?
Link to comment
Share on other sites

IMHO we don't have to worry, we may just refine FrequencyVectors to make it more compatible with our CPUs, which may be also unnecessary. As for XCPM, no changes required. This might also why XCPM came in and replaced the old AppleIntelCPUPowerManagement mechanism. Mainly flexibility I guess. Although no source code to refer to...

  • Like 1
Link to comment
Share on other sites

ssdtGen by mfc88

 

Introduction: ssdtGen is an automated bash script that attempts to build and compile SSDTs for X99/Z170 systems running Mac OS.

 

How to download:

You can download the latest version of ssdtGen to your Desktop by entering the following command in a terminal window:

cd ~/Desktop && curl -O -L https://raw.githubusercontent.com/mattcarlotta/ssdtGen/master/ssdtGen.sh
You can then verify the downloaded size (should be about 34kb):

wc -c ssdtGen.sh
You must change the file permissions to make it executable:

chmod +x ssdtGen.sh
Lastly, use this command to run the script:

~/Desktop/ssdtGen.sh
Script Commands:

buildall (will attempt to build all SSDTs)
build NAME (will attempt to build a single SSDT)
debug (will attempt to build all SSDTS while generating a debug_output.txt file)
help (will display help instructions)
exit (will exit the script)
aGk6iGv.png

 

*** Currently looking for user's to test the script and report any errors or problems from running it. 

*** If any errors or problems occur, follow on-screen instructions to run in debug mode then attached the debug_output.txt to this thread.

 

**************************************************************************************************

*                                                          Important Notes:                                                                                            *

**************************************************************************************************

*** DSDT ACPI tables must be vanilla. If any devices are renamed, forget about it. Won't work.

  • This script (as of now) only supports x99/z170 systems.
  • This script will install IASL to the usr/local/bin directory if it's missing from usr/bin or usr/local/bin 
  • This script is in beta testing. Therefore, expect some problems to occur!
  • If a SSDT-xxxx.aml fails to compile, then it won't be saved. Check the terminal output for errors.
† XHCI must be named XHC via config.plist DSDT patch (recommended to install USBInjectAll.kext +

XHCI-x99-injector.kext with a custom SSDT-UAIC.aml):

**Note: This script is highly experimental! Use any generated SSDTs with caution.

 

**************************************************************************************************

 

Change Logs:

0.0.2b:
✓ Check for "File System Protection" instead of "Kext Signing"
✓ Removed MaciASL (use your own editor)
✓ Moved away from downloading/compiling IASL and now moved to a precompiled version
✓ Xcode no longer needed
✓ SIP gives warnings instead of errors

0.0.3b:
✓ Checks for user's motherboard ID, if not x99, ends script
✓ Added some bold styling to errors so that they stand out from regular text
✓ Added user choices: build, debug, help and exit
✓ Debug now outputs running script (up until it errors and script ends) and attaches an IOReg output (one file: debug_output.txt)
✓ Help displays instructions on how to run and what each of the SSDTs do

0.0.4b:
✓ Unfound device properties no longer kill entire script
✓ Added and trimmed down user choice commands
✓ Updated help instructions to reflect new commands

0.0.6b:
✓ Fixed some SSDT build mistakes, where the same device was being injected and then subsequently set to 0
✓ Hardcoded compatible-ids/device-ids for HECI and LPC0
✓ Fixed GPU device-id IOReg search to return 1 result, instead of 2:
1 result:
device-id <C2 17 00 00>

2 results:
device-id <02 A8 00 00>
device-id <C2 17 00 00>

✓ Fixed compatible-id IOReg search to return 1 result, instead of 3:
1 result:
"compatible" - "pci8086,8d3a"

3 results:
"compatible" - "pci1043,8600,pci8086,8d3a,pciclass,078000,"

0.0.9b:
✓ Removed SSDT-EVMR (Intel SPSR controller) -- not needed nor supported/updated by Intel
✓ Refactored SSDT-SMBS to include Apple "mikey" driver (thanks to Mald0n's DSDTs)
✓ All devices will now show up in System Report's "PCI" tab (thanks to Fergarth for reporting missing PCI devices)
✓ Adjusted SSDT-GFX1 to only inject necessary properties (removed any superfluous properties)
✓ Found and fixed that SSDT-GFX1 (GPU) injection can fail due to a missing HDAU "PinConfiguration" property

0.1.0b:
✓ Added initial support for z170 motherboards!!!
✓ Updated help section for X99/z170 SSDT names
✓ Removed the superfluous .dsl header notes

0.1.1b:
✓ Forced a temporary Terminal window resize for optimal viewing (102x30)
✓ Added initial support for a building a single SSDT for a NVME device†
✓ Updated help section for NVME SSDT building
✓ Refactored the commands to be more user-friendly and declarative 

† At the moment, it does not support incomplete ACPI tables -- only works in conjunction with a spoofed HackrNVMeFamily-10_xx_x.kext

0.1.2b:
✓ Added complete support for a NVME SSDT coinciding with a spoofed HackrNvmeFamily.kext -- which includes support for incomplete, bridged, and standard ACPI paths
✓ Adjusted the NVME SSDT to show up in About This Mac->PCI as "Built-In" versus "Ethernet"
✓ Fixed mobo check to include Asus Z170 "Maximus" 
✓ Adjusted debug mode to now allow on-the-fly writing to Terminal and to an output file
✓ Optimized code for less redundancy

0.1.3b:
✓ Adjusted GPU IOREG look-up because of varying ACPI paths
✓ Adjusted the NVME prompt inputs to have built in syntax and length checks
✓ Fixed SMBS/SBUS SSDT mistake, where Z170 boards used wrong hardcoded device in notify operators
✓ Added notes to the entire source
✓ Optimized code for less redundancy
  • Like 5
Link to comment
Share on other sites

 

:D  :D  :P

 block me? 

Permission denied (publickey).
fatal: Could not read from remote repository.

Oops! Github requires registered SSH keys for gitclone. Updated post above so that anyone can download it now.

Congratulations mfc, you are getting a Pro :yes:

Still patiently waiting for an IOReg with my EFI installed. :yes:  B)

  • Like 1
Link to comment
Share on other sites

Still patiently waiting for an IOReg with my EFI installed. :yes:  B)

I understand, but I have run out of time and the few times I have used the hack has been for important things. Things that need stability in the system and are not compatible with experiences at this time. Many times I've been here, just like now, or are either on the mobile phone or the laptop. But I'm not forgetting what you asked me to do.

Link to comment
Share on other sites

@mfc88

Hi. First of all thanks for your hard work and nice to meet you here again!

 

In ssdtGen.sh L143, we should check 'Filesystem Protections' instead of 'Kext Signing', I think this should be a typo.

L159, I think change to a not operator is enough, because you've let the log go to /dev/null which is useless...

And about the whole "_checkPreInstalled()", I think it's somewhat complicated, IMHO, uploading a pre-compiled iasl CLT to your GitHub and download it when necessary is enough, and install it to /usr/local/bin, that is not protected by SIP. BTW, I don't get any exact use of MaciASL.app and thus why we need it?

And why you need to mess up with some unrelated devices? (Audio, Graphics, USB, etc)

 

Also. We can make a mother board check, please try:

ioreg -lw0 -p IODeviceTree | awk '/OEMBoard/ {print $4}' | tr -d '<"">'

Well, the output may be different from each X99-based testers, so please use w/ caution.

 

  • Like 1
Link to comment
Share on other sites

 

@mfc88

Hi. First of all thanks for your hard work and nice to meet you here again!

 

In ssdtGen.sh L143, we should check 'Filesystem Protections' instead of 'Kext Signing', I think this should be a typo.

L159, I think change to a not operator is enough, because you've let the log go to /dev/null which is useless...

And about the whole "_checkPreInstalled()", I think it's somewhat complicated, IMHO, uploading a pre-compiled iasl CLT to your GitHub and download it when necessary is enough, and install it to /usr/local/bin, that is not protected by SIP. BTW, I don't get any exact use of MaciASL.app and thus why we need it?

And why you need to mess up with some unrelated devices? (Audio, Graphics, USB, etc)

 

Also. We can make a mother board check, please try:

ioreg -lw0 -p IODeviceTree | awk '/OEMBoard/ {print $4}' | tr -d '<"">'

Well, the output may be different from each X99-based testers, so please use w/ caution.

 

Edited.

 

- Will consider the board check. However, since I can't test it myself using other boards, it's hard to implement. For now, user's must use common sense. 

  • Like 1
Link to comment
Share on other sites

✓ Fixed File System Protection mistake

- Left L163 and L210 for debugging purposes. Planning on adding a debug option in the future that'll replace this and output to a file. 

- I don't want to maintain IASL nor MaciASL, so I'll keep all downloads external, as well as keep all installation directories the same per Rehabman's guides

- MaciASL is installed so that a user can open the .AML to make sure properties are correct. IASL likes to compile despite obvious mistakes.

- GPU/Audio injection is what most user's will be looking for. Doesn't make sense to exclude it. From a programming stand-point, it'll cause the most headaches. But, I'll manage for now.

 

- Will consider the board check. However, since I can't test it myself using other boards, it's hard to implement. For now, user's must use common sense. 

Well, yes. You may need to add some arguments to adjust these things.

I don't think we need to really maintain iASL, (such as keeping it up-to-date), it's just a compiler, which is used to compile AML. As you see, Pike hasn't updated iASL for such a long time... So anyway I think a pre-compiled binary is enough.

Alright, keep your mind, but typically I don't want to install anything else which is unrelated to our major target...

I see, so we may rename this repo, couldn't we? :P

 

Well, I think we may introduce a `case` for that, although we may need to add it for a couple of time...

  • Like 1
Link to comment
Share on other sites

ssdtGen changelog 0.0.2b:
✓ Check for "File System Protection" instead of "Kext Signing"
✓ Removed MaciASL (use your own editor)
✓ Moved away from downloading/compiling IASL and now moved to a precompiled version
✓ Xcode no longer needed
✓ SIP gives warnings instead of errors

Things to add:

- "Help" option within program describing each SSDT's function

- Left L156 and L166 for debugging purposes. Will be adding debug output soon. 

- Option to build one or more user specified SSDTs

- Option to build uncompiled SSDT-xxxx.dsl

- Motherboard checks 

  • Like 2
Link to comment
Share on other sites

Hey! Can anyone help me and point me in the right direction how i can make a SSDT to find my thunderbolt bus in system info? Thunderbolt is working great :)

At the moment there is no way to show thunderbolt bus in system info...and nobody with a tb card has created an ssdt for it

  • Like 1
Link to comment
Share on other sites

u can apply patch in DSDT with Name (_SUN, 0x0x)  // _SUN: Slot User Number

 

I use it

 

Device (DSB0)

                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (NHI0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                            {
                                Return (Zero)
                            }
                        }
                    }
 
                    Device (DSB1)
                    {
                        Name (_ADR, 0x00010000)  // _ADR: Address
                        Name (_SUN, XxXX)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }
 
                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 1", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 
 
                                "name", 
                                "pci-bridge"
                            })
                        }
                    }
 
                    Device (DSB2)
                    {
                        Name (_ADR, 0x00020000)  // _ADR: Address
                        Name (_SUN, XxXX)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }
 
                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 2", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 
 
                                "name", 
                                "pci-bridge"
                            })
                        }
                    }
 
                    Device (DSB4)
                    {
                        Name (_ADR, 0x00040000)  // _ADR: Address
                        Name (_SUN, XxXX)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }
 
                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 4", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 
 
                                "name", 
                                "pci-bridge"
                            })
                        }
                    }
 
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (OSDW ())
                        {
                            If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
                            {
                                If (LEqual (Arg2, Zero))
                                {
                                    Return (Buffer (One)
                                    {
                                         0x03                                           
                                    })
                                }
 
                                Return (Package (0x02)
                                {
                                    "PCI-Thunderbolt", 
                                    One
                                })
                            }
                        }
 
                        Return (Zero)
                    }

just create a device with correct name_adr and put Name (_SUN, XxXX)

example

Name (_SUN, 0x02)  // _SUN: Slot User Number

Name (_SUN, 0x03)  // _SUN: Slot User Number

Name (_SUN, 0x04)  // _SUN: Slot User Number

 

in my case, into device RP05/PXSX

Correct in ioreg and about this mac/pci

 

just check ioreg and apple tables too

  • Like 1
Link to comment
Share on other sites

u can apply patch in DSDT with Name (_SUN, 0x0x)  // _SUN: Slot User Number

 

I use it

just create a device with correct name_adr and put Name (_SUN, XxXX)

example

Name (_SUN, 0x02)  // _SUN: Slot User Number

Name (_SUN, 0x03)  // _SUN: Slot User Number

Name (_SUN, 0x04)  // _SUN: Slot User Number

 

in my case, into device RP05/PXSX

Correct in ioreg and about this mac/pci

 

just check ioreg and apple tables too

How were able to find this?

 

When I dropped my MacPro10,1 tables, it doesn't even show in the DSDT... at all... (checked SSDTs as well)

 

 

Nevermind, found it referenced in a SSDT.

 

Here's a legit Apple MBPro10,1 thunderbolt ACPI device path:

 

@ SB.PCI0.PEG1.UPSB.DSB0.NHI0:

1dYsM5d.png

Scope (\_SB.PCI0.PEG1)
        {
            OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
            Field (A1E0, ByteAcc, NoLock, Preserve)
            { 
...

            Device (UPSB)
            {
                Name (_ADR, 0x00)  // _ADR: Address
                OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
...

                 Device (DSB0)
                {
                    Name (_ADR, 0x00)  // _ADR: Address
                    OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
                    Field (A1E0, ByteAcc, NoLock, Preserve)
                    {
...
                    Device (NHI0)
                    {
                        Name (_ADR, 0x00)  // _ADR: Address
                        Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                        Method (_EJ0, 1, NotSerialized)  // _EJx: Eject Device
                        {
...
                Device (DSB1)
                {
                    Name (_ADR, 0x00030000)  // _ADR: Address
                    Name (_SUN, 0x02)  // _SUN: Slot User Number
                    OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
                    Field (A1E0, ByteAcc, NoLock, Preserve)
                    {
                      (devices UPS0-UPS6)
...
                Device (DSB2)
                {
                    Name (_ADR, 0x00040000)  // _ADR: Address
                    Name (_SUN, 0x03)  // _SUN: Slot User Number
                    OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
                    Field (A1E0, ByteAcc, NoLock, Preserve)
                    {
                      (devices UPS0-UPS6)
...
                Device (DSB3)
                {
                    Name (_ADR, 0x00050000)  // _ADR: Address
                    Name (_SUN, 0x04)  // _SUN: Slot User Number
                    Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                    {
...
                Device (DSB4)
                {
                    Name (_ADR, 0x00060000)  // _ADR: Address
                    Name (_SUN, 0x05)  // _SUN: Slot User Number
                    OperationRegion (A1E0, PCI_Config, 0x00, 0x40)
                    Field (A1E0, ByteAcc, NoLock, Preserve)
                    {
...
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If (OSDW)
                    {
                        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
                        {
                            Store (Package (0x02)
                                {
                                    "PCI-Thunderbolt", 
                                    0x01
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                    }

                    Return (Zero)
                }



  • Like 1
Link to comment
Share on other sites

See iMac17,1 too, its a new

SSDT 5

 

in my DSDT i apply it, mobo GIGABYTE Z170X-UD5TH

Device (DSB0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (NHI0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                            {
                                Return (Zero)
                            }
                        }
                    }

                    Device (DSB1)
                    {
                        Name (_ADR, 0x00010000)  // _ADR: Address
                        Name (_SUN, 0x02)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 2", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Device (DSB2)
                    {
                        Name (_ADR, 0x00020000)  // _ADR: Address
                        Name (_SUN, 0x03)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 3", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Device (DSB4)
                    {
                        Name (_ADR, 0x00040000)  // _ADR: Address
                        Name (_SUN, 0x04)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 4", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (OSDW ())
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x02)
                            {
                                "PCI-Thunderbolt", 
                                One
                            })
                        }
                    }

                    Return (Zero)
                }
... 
  • Like 2
Link to comment
Share on other sites

ssdtGen updated to 0.0.3beta

ssdtGen changelog 0.0.3b:
✓ Checks for user's motherboard ID, if not x99, ends script
✓ Added some bold styling to errors so that they stand out from regular text
✓ Added user choices: build, debug, help and exit
✓ Debug now outputs running script (up until it errors and script ends) and attaches an IOReg output (one file: debug_output.txt)
✓ Help displays instructions on how to run and what each of the SSDTs do

0.0.3b Script Commands:

build (will attempt to build SSDTs)
debug (will generate a debug_output.txt file)
help (will display instructions)
exit (will exit the script)
  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...