Contribute
Register

[Guide] HackrNVMeFamily co-existence with IONVMeFamily using class-code spoof

Status
Not open for further replies.
Joined
Aug 19, 2011
Messages
140
Motherboard
H55CM
CPU
I3-530
Graphics
7750
@RehabMan
It may have more path components without ACPI identities. Likely behind a PCI bridge...
If you have an ioreg, it would be more clear.

But guessing, might be something like:
Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG0.PEGP, DeviceObj)
    Device(_SB.PCI0.PEG0.PEGP.PCI8)
    {
        Name(_ADR, 0x00080000)
        Device(SSD0) { Name(_ADR, 0) }
    }
    Method(_SB.PCI0.PEG0.PEGP.PCI8.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
        })
    }
}
//EOF
I am trying to use the trick on my second SSD (non-system). Basically I want to use the stock IONVMeFamily kext for the system SSD and use this for PM981. The problem I am having is that half of the time this works. And if I can boot into the system, I can see one device is assigned to the stock driver and the other is assigned to the hacked driver. Everything works smoothly and no trouble at all. However, the other half the time I would get crash and reboot. The crash report is attached below. This seems to be some kind of load order issue? Is there a way to solve this using OC?

panic(cpu 1 caller 0xffffff801ba60f52): "attempting to register a sysctl at previously registered slot : 135"@/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/xnu/xnu-7195.50.7/bsd/kern/kern_newsysctl.c:242
Backtrace (CPU 1), Frame : Return Address
0xffffffa0bfa638c0 : 0xffffff801b4bc66d mach_kernel : _handle_debugger_trap + 0x3dd
0xffffffa0bfa63910 : 0xffffff801b5ff073 mach_kernel : _kdp_i386_trap + 0x143
0xffffffa0bfa63950 : 0xffffff801b5ef6aa mach_kernel : _kernel_trap + 0x55a
0xffffffa0bfa639a0 : 0xffffff801b461a2f mach_kernel : _return_from_trap + 0xff
0xffffffa0bfa639c0 : 0xffffff801b4bbf0d mach_kernel : _DebuggerTrapWithState + 0xad
0xffffffa0bfa63ae0 : 0xffffff801b4bc1f8 mach_kernel : _panic_trap_to_debugger + 0x268
0xffffffa0bfa63b50 : 0xffffff801bcbee1a mach_kernel : _panic + 0x54
0xffffffa0bfa63bc0 : 0xffffff801ba60f52 mach_kernel : _sysctl_register_oid + 0x122
0xffffffa0bfa63bf0 : 0xffffff801f821605 com.apple.hack.HackrNVMeFamily : __ZN11NVMeGlobalsC2Ev + 0x47
0xffffffa0bfa63c10 : 0xffffff801bba28dc mach_kernel : _OSRuntimeInitializeCPP + 0x66c
0xffffffa0bfa63c80 : 0xffffff801bba2396 mach_kernel : _OSRuntimeInitializeCPP + 0x126
0xffffffa0bfa63cf0 : 0xffffff801bb86b32 mach_kernel : __ZN6OSKext5startEb + 0x182
0xffffffa0bfa63d40 : 0xffffff801bb8413c mach_kernel : __ZN6OSKext4loadEhhP7OSArray + 0xdc
0xffffffa0bfa63da0 : 0xffffff801bb989dd mach_kernel : __ZN6OSKext22loadKextWithIdentifierEP8OSStringPP8OSObjectbbhhP7OSArray + 0x1ad
0xffffffa0bfa63df0 : 0xffffff801bc0eebe mach_kernel : __ZNK11IOCatalogue14isModuleLoadedEP12OSDictionaryPP8OSObject + 0xee
0xffffffa0bfa63e40 : 0xffffff801bbee39b mach_kernel : __ZN9IOService15probeCandidatesEP12OSOrderedSet + 0x43b
0xffffffa0bfa63ef0 : 0xffffff801bbeddcf mach_kernel : __ZN9IOService14doServiceMatchEj + 0x30f
0xffffffa0bfa63f50 : 0xffffff801bbf0b46 mach_kernel : __ZN15_IOConfigThread4mainEPvi + 0x186
0xffffffa0bfa63fa0 : 0xffffff801b46113e mach_kernel : _call_continuation + 0x2e
Kernel Extensions in backtrace:
com.apple.hack.HackrNVMeFamily(92.1)[12D4270E-AFFC-34DC-9714-44D1FE33333F]@0xffffff801f821000->0xffffff801f860fff
dependency: com.apple.driver.AppleEFINVRAM(2.1)[78808055-9D80-3318-8BEE-4C545178A586]@0xffffff801c855000->0xffffff801c85efff
dependency: com.apple.driver.AppleMobileFileIntegrity(1.0.5)[37AC6FB3-4CB3-3E1A-981C-48A212712E57]@0xffffff801c9fc000->0xffffff801ca10fff
dependency: com.apple.iokit.IOPCIFamily(2.9)[A18ACD60-A811-3624-B50D-4F929836EE79]@0xffffff801de17000->0xffffff801de3efff
dependency: com.apple.iokit.IOReportFamily(47)[0EC55CCD-966C-33F4-9B8A-1E9CB2778AE7]@0xffffff801de4d000->0xffffff801de4ffff
dependency: com.apple.iokit.IOStorageFamily(2.1)[3FE3BE82-782C-3D93-8EFA-F06A4594D17C]@0xffffff801df37000->0xffffff801df48fff

Process name corresponding to current thread: kernel_task
Boot args: batman=0xff keepsyms=1 debug=0x12a acpi_layer=0x8 acpi_level=0x2 msgbuf=309212 -liludbg -nvmefdbg chunklist-security-epoch=0 -chunklist-no-rev2-dev

Mac OS version:
20B29

Kernel version:
Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64
Kernel UUID: 84C6DC45-6B02-335F-9439-5D2A9BC385A4
KernelCache slide: 0x000000001b200000
KernelCache base: 0xffffff801b400000
Kernel slide: 0x000000001b210000
Kernel text base: 0xffffff801b410000
__HIB text base: 0xffffff801b300000
System model name: MacBookPro14,1 (Mac-B4831CEBD52A0C4C)
System shutdown begun: NO
Panic diags file available: NO (0xe00002d8)
Hibernation exit count: 0

System uptime in nanoseconds: 2892791123
Last Sleep: absolute base_tsc base_nano
Uptime : 0x00000000ac6c844a
Sleep : 0x0000000000000000 0x0000000000000000 0x0000000000000000
Wake : 0x0000000000000000 0x0000000cf7b7c5b4 0x0000000000000000
 

Stork

Admin
Staff member
Joined
Sep 21, 2010
Messages
13,208
Motherboard
Gigabyte Z690 Aero G
CPU
i5-12600K
Graphics
RX 6800 XT
Mac
  1. MacBook Pro
  2. Mac mini
  3. Mac Pro
Classic Mac
  1. Power Mac
  2. PowerBook
Mobile Phone
  1. iOS
@grassmudhorse, This thread is no longer appropriate for macOS newer than High Sierra 10.12.6.
 
Status
Not open for further replies.
Top