- Joined
- Apr 1, 2011
- Messages
- 348
- Motherboard
- Gigabyte z390 Designare
- CPU
- i9-9900K
- Graphics
- RX 5700 XT
- Mac
- Mobile Phone
I am extremely interested to see where this line of study and investigation leads. Anything that brings a closer integration of the Thunderbolt sub-system in to the Hackintosh area is GODs work.... I rely on my thunderbolt interfaces on my MacBook Pro daily and getting a closer more real world experience with my Hack is a dream...I finally plan to test OpenCore because I'm intrigued by the inclusion of the DevicePath protocol. However, I wonder if that is different from DevicePathProperties. One of the obstacles for activating Thunderbolt Local Node and Thunderbolt Bus is the following:
I plan to use your OpenCore EFI on a USB flash disk. If you have a newer or updated version that you think might be a better version to test, please let me know.
- Apple's EFI firmware (BIOS) includes a large number of DXE Drivers. The drivers that we believe are instrumental in setting up Thunderbolt properly include, but may not be limited to, the following:
- EfiDevicePathPropertyDatabase.efi
- ThunderboltNhi.efi
- ThunderboltXDomainDevice.efi
- PciThunderbolt.efi
- DevicePathDriver.efi
- The EFI firmware plays a crucial role in setting up or initializing various internal components such as the Thunderbolt controller.
- The EFI firmware sets up key parameters such as:
- ThunderboltDROM
- pathcr
- pathcrumbsv2
- TBTDPLowToHigh
- ThunderboltConfig
- etc.
- These parameters are then passed to Apple's boot.efi, which starts macOS.
- So the Thunderbolt Kexts inside macOS do not set this up. They rely on these EfiDevicePathProperties to be passed in by the EFI Firmware.
- I am not sure whether the Clover Boot Loader includes the EFI protocol necessary for this type of handshake between Firmware and macOS.
- But the OpenCore source code includes the DevicePath protocol, which has me intrigued... Will this allow EfiDevicePathProperties created by the Firmware to be passed to the macOS kernel?
Edit (12 July 2019): After reading relevant parts of the UEFI Specification, I need to make some corrections:
- EFI Device Path protocol is standard; it's a fundamental part of the UEFI spec.
- Apple implements a custom AAPL,PathProperties protocol that is implemented in EfiDevicePathProperties.efi.
- Apple's ThunderboltNhi and ThunderboltXDomainDevice are EFI Boot Service drivers (SUBSYSTEM Type = 0x0B) instead of EFI Runtime Drivers. This means they are terminated sometime during the boot process. The macOS kexts no longer rely on them. But these EFI Boot Service drivers pass important Thunderbolt operating properties to the boot loader (via the custom AAPL,PathProperties protocol), which in turn passes them on to AppleACPIPlatform.kext for use by macOS.
- The EFI Boot Service drivers can initialize and configure the Thunderbolt controller, but the UEFI Spec requires the OS-level drivers to not make any assumptions, and to initialize and configure the controller by themselves.
Thank You for digging on this CaseySJ