I totally forgot to blog about the nvme boot argument that I found in the 10.12 Beta kext seven months ago:
bit-0: (0x01) enable debug output (calls _kprintf)
bit-1: (0x02) enable self refresh
bit-2: (0x04) enable LBA extend
bit-3: (0x08) enable LPSR support during S3/S4
bit-4: (0x10) PCI only mode
bit-5: (0x20) ignore initialisation errors
bit-6: (0x40) enable enctryption support
You may want to run debugMachKernel.sh for bit-0.
For bit-1 seting the “nvme-self-refresh” Number property is required.
For bit-3 seting the “nvme-LPSR-during-S3-S4” Number property is required.
For bit-4 this appears to be the default.
Apple hardware also support: enable-IO-log=1 but that won’t work on other hardware.
Next. I also found a NVRAM variable:
I received a couple of questions about this and never got to answer it so let’s do that here. In short. Yes. I am using a dummy kext right now. Here’s what I did:
1.) I copied IONVMEfamily.kext to /S*/L*/E*/AppleNVMeFamily.kext
2.) I patched the binary with my patches only
3.) I changed the version info in the Info.plist from 2.1.0 to 9.9.9
The original vanilla IONVMeFamily.kext is still there in /System/Library/Extensions and all is fine. No issues whatsoever. With 1546 power cycles I can call this a rock solid proven method.