build.py: Add AVXpel-based NoAVX kext

Resolves Zlib-based instability in Ventura on pre-Sandy Bridge Macs

Credit to @educovas for developing
This commit is contained in:
Mykola Grymalyuk
2022-09-21 18:45:29 -06:00
parent daf28a62ef
commit 92ff4244ae
4 changed files with 25 additions and 1 deletions

View File

@@ -1269,12 +1269,30 @@
<key>ExecutablePath</key>
<string>Contents/MacOS/NoAVXFSCompressionTypeZlib</string>
<key>MaxKernel</key>
<string></string>
<string>21.99.99</string>
<key>MinKernel</key>
<string>21.5.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>NoAVXFSCompressionTypeZlib-AVXpel.kext</string>
<key>Comment</key>
<string>Work-around 13.0+ Zlib kernel panic</string>
<key>Enabled</key>
<false/>
<key>ExecutablePath</key>
<string>Contents/MacOS/NoAVXFSCompressionTypeZlib</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>22.0.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Arch</key>
<string>x86_64</string>

View File

@@ -268,6 +268,7 @@ class BuildOpenCore:
# To verify the non-AVX kext is used, check IOService for 'com_apple_AppleFSCompression_NoAVXCompressionTypeZlib'
if smbios_data.smbios_dictionary[self.model]["CPU Generation"] < cpu_data.cpu_data.sandy_bridge.value:
self.enable_kext("NoAVXFSCompressionTypeZlib.kext", self.constants.apfs_zlib_version, self.constants.apfs_zlib_path)
self.enable_kext("NoAVXFSCompressionTypeZlib-AVXpel.kext", self.constants.apfs_zlib_v2_version, self.constants.apfs_zlib_v2_path)
if not self.constants.custom_model and (self.constants.allow_oc_everywhere is True or self.model in model_array.MacPro):
# Use Innie's same logic:

View File

@@ -56,6 +56,7 @@ class Constants:
self.apple_isight_version = "1.0.0" # AppleiSight
self.apple_raid_version = "1.0.0" # AppleRAIDCard
self.apfs_zlib_version = "12.3.1" # NoAVXFSCompressionTypeZlib
self.apfs_zlib_v2_version = "12.6" # NoAVXFSCompressionTypeZlib (patched with AVXpel)
self.multitouch_version = "1.0.0" # AppleUSBMultitouch
self.topcase_version = "1.0.0" # AppleUSBTopCase
self.intel_82574l_version = "1.0.0" # Intel82574L
@@ -331,6 +332,10 @@ class Constants:
def apfs_zlib_path(self):
return self.payload_kexts_path / Path(f"Misc/NoAVXFSCompressionTypeZlib-v{self.apfs_zlib_version}.zip")
@property
def apfs_zlib_v2_path(self):
return self.payload_kexts_path / Path(f"Misc/NoAVXFSCompressionTypeZlib-AVXpel-v{self.apfs_zlib_v2_version}.zip")
@property
def multitouch_path(self):
return self.payload_kexts_path / Path(f"Misc/AppleUSBMultitouch-v{self.multitouch_version}.zip")