NVMe boot args and Dummy kext…

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:


Dummy Kext

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.


2 thoughts on “NVMe boot args and Dummy kext…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s