Contribute
Register

Could DSDT fix Thunderbolt problem?

Status
Not open for further replies.
Joined
Jan 5, 2013
Messages
4
Motherboard
10.8
CPU
i7
Graphics
Nvidia
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
Hey guys!
Maybe some of the DSDT experienced users here can help me with something.
My hac is based on the GA Z77MX-D3H TH and I am experiencing some weird behaviour with my Promise Pegasus R6 Thunderbolt raid.
For instance, if I reboot with the raid mounted, once the reboot is done, the raid is gone. It won't show up in disk utility either. My guess is that once it loses connection to the host, the controller inside the Pegasus just goes into panic.
(the pegasus is basically a 6Gb SAS controller card with a backplane and 6 drives connected via Thunderbolt)
I also have an iMAc 2011 that works just fine with the Pegasus, no trouble after rebooting, it just shows up again.

My question basically is:

Could the Z77MX-D3H TH's Thunderbolt behaviour be improved by comparing it's DSDT with that of my iMac and making the necessary changes?
I am by no means an expert at this, quite the contrary, it just seems plausible to me that there must be a difference in how the two mainboards communicate with the operating system with regards to the Thunderbolt chipset.

Please chime in if you think you can point me in the right direction on what to look for in the two DSDTs or if you'd be willing to take a look yourself.
And please do chime in if you think this is all total nonsense, like I said, it's just a theory.

Many thanks in advance!

Jens
 
I would advise you to add two ioreg dumps. One when it works, before the reboot, and one after a reboot.
 
Here you go.

I've also enclosed a dump from my iMac. It looks like Apple has a whole set of rules for Thunderbolt devices as the iMac's dump specifically mentions Thunderbolt at several points.
Maybe someone who actually knows what he's doing could even try to tackle the current state of "un-hot-plug-ability" with this info. It's a wild guess but I assume without any kind of further information from the OS to the mainboard on how to deal with Thunderbolt, hot plugging / unplugging is basically like ripping out a PCI express card while the machine is still running. Maybe with decoding Apple's set of rules the whole Thunderbolt situation on hacs could be vastly improved.
Sorry if my terminology is all off, like I said, I barely grasp what is going on here let alone understand the code.

Anyway, every bit of help is much much appreciated.
 

Attachments

  • ioregs.zip
    226.7 KB · Views: 147
any news ?

1. thunderbolt on hackintosh is not showing in system info - maybe adding device in DSDT will solve that ? Connected devices are there, but there is no info at hardware/thunderbolt
2. hotplugging is not working - there is need to restart system. I've read that ACPI specification is covering hotplugging, so maybe some edits will help too.
 
Nothing so far. I tried to look into it myself but I totally lack the skills and the time to pull it off.
Maybe if enough people were willing to contribute and put a "bounty" out, one of the coding masterminds could have a shot at it.

For now I have gone back to eSata which is just dead slow compared to the speed I got from the Pegasus. It is a lot less cumbersome though. I am considering an Areca SAS controller and an external JBOD enclosure as a replacement for the Pegasus thug as I want something safe and fast that I can use in Windows and Mac OS X equally.
 
You seem to be missing some device-properties. Look here – 2012 iMac13,1:
Code:
[FONT=Menlo]    [COLOR=#bb2ca2]<key>[/COLOR]PciRoot(0x0)/Pci(0x1c,0x4)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)[COLOR=#bb2ca2]</key>[/COLOR][/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]    [/COLOR]<dict>[/FONT][/COLOR]
[FONT=Menlo]        [COLOR=#bb2ca2]<key>[/COLOR]TBTDPLowToHigh[COLOR=#bb2ca2]</key>[/COLOR][/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<data>[/FONT][/COLOR]
[FONT=Menlo]        AQAAAA==[/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]</data>[/FONT][/COLOR]
[FONT=Menlo]        [COLOR=#bb2ca2]<key>[/COLOR]ThunderboltDROM[COLOR=#bb2ca2]</key>[/COLOR][/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<data>[/FONT][/COLOR]
[FONT=Menlo]        KGDu9BYNAAEAvI+3PgFlAAEACgABAgiBgAKAAAAACIKQAYAAAAAIg4AEgAEA[/FONT]
[FONT=Menlo]        AAiEkAOAAQAACIUAAAAAAAADhmADh4ADiKADicAFilAAAAWLUACCBYxQAIQN[/FONT]
[FONT=Menlo]        AUFwcGxlIEluYy4ADAJNYWNpbnRvc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA[/FONT]
[FONT=Menlo]        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA[/FONT]
[FONT=Menlo]        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA[/FONT]
[FONT=Menlo]        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==[/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]</data>[/FONT][/COLOR]
[FONT=Menlo]        [COLOR=#bb2ca2]<key>[/COLOR]ThunderboltUUID[COLOR=#bb2ca2]</key>[/COLOR][/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<data>[/FONT][/COLOR]
[FONT=Menlo]        40KxEo26a1eqFN5P4Bhy7Q==[/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]</data>[/FONT][/COLOR]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<key>[COLOR=#000000]pathcr[/COLOR]</key>[/FONT][/COLOR]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<data>[/FONT][/COLOR]
[FONT=Menlo]        BAAAAAAAAAAAAAcAEAAQAAUAAAAAAAAAAAAHABAAEAABAAAACwAOAA4AAAAA[/FONT]
[FONT=Menlo]        AAAAAgAAAAAAAAAAAAQAAgABAAMAAAAAAAAAAAAHAAIAAQA=[/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]</data>[/FONT][/COLOR]
[FONT=Menlo]        [COLOR=#bb2ca2]<key>[/COLOR]sscOffset[COLOR=#bb2ca2]</key>[/COLOR][/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]<data>[/FONT][/COLOR]
[FONT=Menlo]        AAc=[/FONT]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]        [/COLOR]</data>[/FONT][/COLOR]
[COLOR=#BB2CA2][FONT=Menlo][COLOR=#000000]    [/COLOR]</dict>[/FONT][/COLOR]
Your Thunderbolt port sits at 0x1c,0x0 instead of 0x1c,0x4 so you'll have to change that.

Tips: Visit this place to convert the data, if you want to use ACPI edits, or use gfxutil (Google) to convert it for you.

The PCI driver should set "PCI-Thunderbolt" (Number) 0x1 when the above trick works.
 
Thanks a lot! I will definitely try this.

Just to be clear, the code you posted needs to go where exactly?
Sorry to bother you with this but I'm still trying to get my head around the whole DSDT thing.

Many thanks!

Jens
 
NHI0@0 can't load
Code:
            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
...
                
                Device (UPSB)
                {
                    Name (_ADR, Zero)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (One)
                    }

                    Device (DSB0)
                    {
                        Name (_ADR, Zero)
                        Device (NHI0)
                        {
                            Name (_ADR, Zero)
                            Name (_STR, Unicode ("Thunderbolt"))
                        }
                    }

                    Device (DSB1)
                    {
                        Name (_ADR, 0x00030000)
                        Name (_SUN, 0x03)
                    }

                    Device (DSB2)
                    {
                        Name (_ADR, 0x00040000)
                        Name (_SUN, 0x04)
                    }

                    Device (DSB3)
                    {
                        Name (_ADR, 0x00050000)
                        Name (_SUN, 0x05)
                        Method (_RMV, 0, NotSerialized)
                        {
                            Return (Zero)
                        }
                    }

                    Device (DSB4)
                    {
                        Name (_ADR, 0x00060000)
                        Name (_SUN, 0x06)
                    }
                    
                    Method (_DSM, 4, NotSerialized)
                    {
                        If (LEqual (Arg2, Zero))
                        {
                            Return (Buffer (One)
                            {
                                0x03
                            })
                        }

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

Attachments

  • Screen Shot 2556-04-02 at 12.55.48 PM.png
    Screen Shot 2556-04-02 at 12.55.48 PM.png
    155.9 KB · Views: 518
  • Screen Shot 2556-04-02 at 12.55.52 PM.jpg
    Screen Shot 2556-04-02 at 12.55.52 PM.jpg
    187.4 KB · Views: 464
  • Screen Shot 2556-04-02 at 12.59.33 PM.png
    Screen Shot 2556-04-02 at 12.59.33 PM.png
    80.1 KB · Views: 379
  • lspci_nnvv.txt
    4.2 KB · Views: 276
  • lspci_nnvvtt.txt
    2.4 KB · Views: 165
Hey I've been looking to try and help solve the long running Thunderbolt/OSX problems on Gigabyte boards. I have a Z78X UD5 TH.

May I ask, how did you injected into NHI0 the device properties that Pike wrote above?

I've tried converting the XML to HEX and

injecting with clover. Doesn't boot.
injecting into com.apple.Boot.plist. Doesn't show up in IOreg.

Thanks in advance for your help.
 
Did you have any further progress with your thunderbolt RAID?

It is truly sad, that something so "cutting edge" like thunderbolt has very limited success on hacks.

Me, I went the safer route with a Highpoint RAID card, which really works well, but my friend was ignorant enought to just go ahead and buy the Promise Pegasus2 R8 RAID and NOW I AM STUCK with trying to get it to work on his Z77x-UP5-TH system. Ugh!

I would be very grateful for any tips.
 
Status
Not open for further replies.
Back
Top