NVMeFix是Apple NVMe存储驱动程序IONVMeFamily的一组修补程序。其目标是改善与非Apple SSD的兼容性。它可以在Apple和非Apple计算机上使用。
实现了以下功能:
- 自主电源状态转换以减少控制器的空闲功耗。
- 主机驱动器有功功率状态管理。
- 某些控制器(VMware,三星PM981)上的超时恐慌的解决方法。
如果有足够的信息提交给我们的Bugtracker,则可以解决与第三方SSD的其他不兼容问题。
不幸的是,某些问题不能仅通过内核端驱动程序来解决。例如,MacBookPro 11,1 EFI包含NVMHCI DXE驱动程序的旧版本,当从启用完整磁盘加密的休眠状态恢复时,该驱动程序会挂起。
安装
NVMeFix至少需要Lilu 1.4.1和至少10.14系统版本。它可能与旧系统兼容,但尚未经过测试。
它可以安装到/Library/Extensions
引导加载程序中,或由引导加载程序注入。
组态
-nvmefdbg
启用详细的DEBUG
构建日志记录。
-nvmefoff
禁用kext。
开启APST时,某些SSD行为异常。NVMeFix尝试检测损坏的主板和SSD组合并加以解决。通过Clover注入的IORegistry键或OpenCore提供的NVRAM变量检测主板。
APST表条目指定发生过渡的最小空闲等待时间。最大可接受延迟为100000微秒,可以通过ps-max-latency-us
父PCI设备(例如 IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/RP06@1C,5/IOPP/SSD0@0
)的低字节8字节属性来覆盖 。如果设置为0,则将完全禁用APST。
诊断程序
RELEASE
build将仅记录有关故障的高级信息。
DEBUG
build将另外记录使用的电源状态,详细的错误消息,并尝试从控制器获取APST状态和表格。
APST启用状态将发布到IONVMeController IORegistry条目apst
键。
如果主动电源管理初始化成功,NVMePMProxy
将使用IOPowerManagement词典在IOPower IORegistry平面中创建一个条目。
例如,可以使用获取有关控制器支持的电源状态的信息smartmontools
。例如,在以下输出中,控制器报告5个状态,其中前三个高功率状态将由NVMeFix用于主动电源管理,后两个状态可用于APST,具体取决于ps-max-latency-us
。
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 9.00W - - 0 0 0 0 0 0
1 + 4.60W - - 1 1 1 1 0 0
2 + 3.80W - - 2 2 2 2 0 0
3 - 0.0450W - - 3 3 3 3 2000 2000
4 - 0.0040W - - 4 4 4 4 6000 8000
IONVMeFamily支持以下调试标志位字段,该字段通过nvme
bootarg或debug.NVMe
sysctl传递:
1: Log some events via kprintf
2: Detailed event trace via kernel_debug with 0x61500xx debugid
4: PRP-related event trace via kernel_debug with 0x61540xx debugid
8: Force disable LPSR for Apple controllers
16: Perform only PCI initialisation of NVMe controller
32: Ignore initialisation errors
128: Disable LPSR for Apple controllers
512: Disable Unmap feature for IONVMeBlockStorageDevice
IONVMeFamily支持以下其他引导参数:
nand-io-timeoutms: Timeout for NVMe requests in ms, 35 s by default
enable-IO-log: Issue CORE_DEBUG_ENABLE_IOLOG ASP command (for Apple controllers)
附
件
下
载