From b1df91cac3cf92ac04eb857b0ba3e3edeee01fcf Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Thu, 25 Nov 2021 17:57:31 -0700 Subject: [PATCH] Add Apple RAID Card support --- CHANGELOG.md | 1 + payloads/Config/config.plist | 20 ++++++++++++++++++- payloads/Kexts/Misc/AppleRAIDCard-v1.0.0.zip | Bin 0 -> 59978 bytes resources/build.py | 13 ++++++++++++ resources/constants.py | 7 ++++++- resources/device_probe.py | 17 ++++++++++++++++ 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 payloads/Kexts/Misc/AppleRAIDCard-v1.0.0.zip diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a3ff25c6..cb93894ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ - Fix Wifi Password prompt in Monterey on legacy wifi - Applicable for Atheros, BCM94328, BCM94322 - Fix OpenCL Acceleration on Ivy Bridge and Kepler +- Add Apple RAID Card support ## 0.3.1 - Increment Binaries: diff --git a/payloads/Config/config.plist b/payloads/Config/config.plist index 7fe207dc9..73c3e8a9d 100644 --- a/payloads/Config/config.plist +++ b/payloads/Config/config.plist @@ -1119,7 +1119,7 @@ BundlePath LegacyUSBVideoSupport.kext Comment - Legayc iSight support + Legacy iSight support Enabled ExecutablePath @@ -1131,6 +1131,24 @@ PlistPath Contents/Info.plist + + Arch + x86_64 + BundlePath + AppleRAIDCard.kext + Comment + RAID Card Support + Enabled + + ExecutablePath + Contents/MacOS/AppleRAIDCard + MaxKernel + + MinKernel + 19.0.0 + PlistPath + Contents/Info.plist + Block diff --git a/payloads/Kexts/Misc/AppleRAIDCard-v1.0.0.zip b/payloads/Kexts/Misc/AppleRAIDCard-v1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..1559cef565e963c31e2a73dd03f697d4d30b7953 GIT binary patch literal 59978 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 A&;S4c literal 0 HcmV?d00001 diff --git a/resources/build.py b/resources/build.py index f6f63c0fd..c0798e1c1 100644 --- a/resources/build.py +++ b/resources/build.py @@ -718,6 +718,19 @@ class BuildOpenCore: print("- Adding SATA Hibernation Patch") self.config["Kernel"]["Quirks"]["ThirdPartyDrives"] = True break + + # Apple RAID Card check + if not self.constants.custom_model: + if self.computer.storage: + for storage_controller in self.computer.storage: + if storage_controller.vendor_id == 0x106b and storage_controller.device_id == 0x008A: + # AppleRAIDCard.kext only supports pci106b,8a + self.enable_kext("AppleRAIDCard.kext", self.constants.apple_raid_version, self.constants.apple_raid_path) + break + elif self.model.startswith("XServe"): + # For XServes, assume RAID is present + # Namely due to Xserve2,1 being limited to 10.7, thus no hardware detection + self.enable_kext("AppleRAIDCard.kext", self.constants.apple_raid_version, self.constants.apple_raid_path) # DEBUG Settings if self.constants.verbose_debug is True: diff --git a/resources/constants.py b/resources/constants.py index 6b73b4332..1ec7827ee 100644 --- a/resources/constants.py +++ b/resources/constants.py @@ -47,7 +47,8 @@ class Constants: self.piixata_version = "1.0.1" # AppleIntelPIIXATA self.fw_kext = "1.0.1" # IOFireWireFamily self.apple_trackpad = "1.0.1" # AppleUSBTrackpad - self.apple_isight_version = "1.0.0" # AppleISight + self.apple_isight_version = "1.0.0" # AppleiSight + self.apple_raid_version = "1.0.0" # AppleRAIDCard ## Apple - Dortania Modified self.bcm570_version = "1.0.2" # CatalinaBCM5701Ethernet @@ -349,6 +350,10 @@ class Constants: @property def apple_isight_path(self): return self.payload_kexts_path / Path(f"Misc/LegacyUSBVideoSupport-v{self.apple_isight_version}.zip") + + @property + def apple_raid_path(self): + return self.payload_kexts_path / Path(f"Misc/AppleRAIDCard-v{self.apple_raid_version}.zip") @property def plist_folder_path(self): diff --git a/resources/device_probe.py b/resources/device_probe.py index f3b0ed84f..ced93f8b1 100644 --- a/resources/device_probe.py +++ b/resources/device_probe.py @@ -154,6 +154,10 @@ class NVMeController(PCIDevice): class SATAController(PCIDevice): CLASS_CODE: ClassVar[int] = 0x010601 +@dataclass +class SASController(PCIDevice): + CLASS_CODE: ClassVar[int] = 0x010400 + @dataclass class NVIDIA(GPU): @@ -417,6 +421,14 @@ class Computer: None, )[1] ) + sas_controllers = ioreg.ioiterator_to_list( + ioreg.IOServiceGetMatchingServices( + ioreg.kIOMasterPortDefault, + {"IOProviderClass": "IOPCIDevice", "IOPropertyMatch": [{"class-code": binascii.a2b_hex(utilities.hexswap(hex(SASController.CLASS_CODE)[2:].zfill(8)))}]}, + None, + )[1] + ) + nvme_controllers = ioreg.ioiterator_to_list( ioreg.IOServiceGetMatchingServices( ioreg.kIOMasterPortDefault, {"IOProviderClass": "IONVMeController", "IOParentMatch": {"IOProviderClass": "IOPCIDevice"}, "IOPropertyMatch": {"IOClass": "IONVMeController"}}, None @@ -425,6 +437,11 @@ class Computer: for device in sata_controllers: self.storage.append(SATAController.from_ioregistry(device)) ioreg.IOObjectRelease(device) + + for device in sas_controllers: + self.storage.append(SASController.from_ioregistry(device)) + ioreg.IOObjectRelease(device) + for device in nvme_controllers: parent = ioreg.IORegistryEntryGetParentEntry(device, "IOService".encode(), None)[1] ioreg.IOObjectRelease(device)