device_probe.py: Work-around NVMe PM issues

This commit is contained in:
Mykola Grymalyuk
2021-12-21 12:47:00 -07:00
parent a8f56c1ec8
commit 7e29758fea
3 changed files with 11 additions and 14 deletions

View File

@@ -2,6 +2,8 @@
## 0.3.4
- Resolves Install USB Creation using incorrect installer
- Resolves `installer` failing to extract InstallAssistant in older OSes
- Resolves certain Samsung NVMe drives appearing as external on Mac Pros
## 0.3.3
- Disable Asset Caching support with spoofless approach

View File

@@ -234,8 +234,14 @@ class BuildOpenCore:
print("- Falling back to -nvmefaspm")
self.config["NVRAM"]["Add"]["7C436110-AB2A-4BBB-A880-FE41995C9F82"]["boot-args"] += " -nvmefaspm"
if self.get_kext_by_bundle_path("NVMeFix.kext")["Enabled"] is False:
self.enable_kext("NVMeFix.kext", self.constants.nvmefix_version, self.constants.nvmefix_path)
if (controller.vendor_id != 0x144D and controller.device_id != 0xA804 and self.model not in ["MacBookPro13,3", "MacBookPro14,3"]):
# Avoid injecting NVMeFix when a native Apple NVMe drive is present
# Note on 2016-2017 MacBook Pros, 15" devices used a stock Samsung SSD with IONVMeController
# Technically this should be patched based on NVMeFix.kext logic,
# however Apple deemed the SSD unsupported for enhanced performance
# https://github.com/acidanthera/NVMeFix/blob/1.0.9/NVMeFix/NVMeFix.cpp#L220-L225
if self.get_kext_by_bundle_path("NVMeFix.kext")["Enabled"] is False:
self.enable_kext("NVMeFix.kext", self.constants.nvmefix_version, self.constants.nvmefix_path)
if not nvme_devices:
print("- No 3rd Party NVMe drives found")

View File

@@ -453,19 +453,8 @@ class Computer:
controller = NVMeController.from_ioregistry(parent)
controller.aspm = aspm
if (
if controller.vendor_id != 0x106B:
# Handle Apple Vendor ID
controller.vendor_id != 0x106B
and (
# Handle soldered Samsung SSDs
controller.vendor_id != 0x144D and controller.device_id != 0xA804
)
):
# Avoid patching when a native Apple NVMe drive is present
# Note on 2016-2017 MacBook Pros, 15" devices used a stock Samsung SSD with IONVMeController
# Technically this should be patched based on NVMeFix.kext logic,
# however Apple deemed the SSD unsupported for usage with AppleNVMeController class
# https://github.com/acidanthera/NVMeFix/blob/1.0.9/NVMeFix/NVMeFix.cpp#L220-L225
self.storage.append(controller)
ioreg.IOObjectRelease(parent)