Contribute
Register

AppleNVMe Assert failed: ASUS Prime X299-A II/Intel Core i7-9800x/Radeon VII/Mojave Install

Status
Not open for further replies.
So try with this EFI folder :
- the config.plist : I adapted with minimal ACPI replacement, without PR replacement, without npci=0x2000 ( for a try)
- in KernelToPatch : there are xcpm_core_scope_msrs and xcpm_pkg_scope_msrs to allow wrightable MSR Ex02 register so at first boot try with CFGlock enable in bios
- in ACPI /patched : just the 3 required SSTs to boot : you can complete later
- Drivers : just some modification
- Kexts/Other : I added the Kexts for Asus Mainboard may be good for yours.



Try and report... ;)
@Loloflatsix
It's frustrating, exact same result :(



@ydeng
I could not compile the DSDT because there are some errors, so I created a SSDT to disable the root complexes. Sadly, that didn't really work as there are still multiple "PCI configuration begin ....end"

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "PCI", 0x00001000)
{
    External (PC01, DeviceObj)
    External (PC02, DeviceObj)
    External (PC03, DeviceObj)
    External (PC04, DeviceObj)
    External (PC05, DeviceObj)
   
    Scope (_SB)
    {
        Scope (PC01)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC02)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC03)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC04)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC05)
        {
            Name (_STA, Zero)  // _STA: Status
        }
    }
}
Try this :

com.apple.iokit.IOPCIFamily
find 48 3D 00 00 00 40
replace 48 3D 00 00 00 80
10.14.x
 
@Loloflatsix
It's frustrating, exact same result :(



@ydeng
I could not compile the DSDT because there are some errors, so I created a SSDT to disable the root complexes. Sadly, that didn't really work as there are still multiple "PCI configuration begin ....end"

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "PCI", 0x00001000)
{
    External (PC01, DeviceObj)
    External (PC02, DeviceObj)
    External (PC03, DeviceObj)
    External (PC04, DeviceObj)
    External (PC05, DeviceObj)
    
    Scope (_SB)
    {
        Scope (PC01)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC02)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC03)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC04)
        {
            Name (_STA, Zero)  // _STA: Status
        }
        Scope (PC05)
        {
            Name (_STA, Zero)  // _STA: Status
        }
    }
}
Set "Name (_HID, EisaId ("GPNP0A08")
Name (_CID, EisaId ("GPNP0A03")" for each of them. ACPIPlatform matches PNP0A08 or PNP0A03 to PCI bridges. There might be an order that could make it work.
 
com.apple.iokit.IOPCIFamily
find 48 3D 00 00 00 40
replace 48 3D 00 00 00 80
10.14.x

Nothing has changed..

Name (_HID, EisaId ("GPNP0A08")

I have tried this, but my SSDT seems to be not working, is wrong?

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "PCI", 0x00001000)
{
    External (PC01, DeviceObj)
    External (PC02, DeviceObj)
    External (PC03, DeviceObj)
    External (PC04, DeviceObj)
    External (PC05, DeviceObj)
    
    External (PCI1, DeviceObj)
    External (PCI2, DeviceObj)
    External (PCI3, DeviceObj)
    External (PCI4, DeviceObj)
    External (PCI5, DeviceObj)
    
    Scope (_SB)
    {
        Device (PC01)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC02)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC03)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC04)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC05)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        
        Device (PCI1)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI2)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI3)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI4)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI5)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
    }
}
 
Nothing has changed..



I have tried this, but my SSDT seems to be not working, is wrong?

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "PCI", 0x00001000)
{
    External (PC01, DeviceObj)
    External (PC02, DeviceObj)
    External (PC03, DeviceObj)
    External (PC04, DeviceObj)
    External (PC05, DeviceObj)
    
    External (PCI1, DeviceObj)
    External (PCI2, DeviceObj)
    External (PCI3, DeviceObj)
    External (PCI4, DeviceObj)
    External (PCI5, DeviceObj)
    
    Scope (_SB)
    {
        Device (PC01)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC02)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC03)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC04)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC05)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        
        Device (PCI1)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI2)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI3)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI4)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI5)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
    }
}
External(_SB.PC01, DeviceObj)
Scope (\_SB.PC01)
{Name (_HID, EisaId ("GNP0A08"))
Name (_CID, EisaId ("GNP0A03")) }
 
Nothing has changed..



I have tried this, but my SSDT seems to be not working, is wrong?

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "PCI", 0x00001000)
{
    External (PC01, DeviceObj)
    External (PC02, DeviceObj)
    External (PC03, DeviceObj)
    External (PC04, DeviceObj)
    External (PC05, DeviceObj)
   
    External (PCI1, DeviceObj)
    External (PCI2, DeviceObj)
    External (PCI3, DeviceObj)
    External (PCI4, DeviceObj)
    External (PCI5, DeviceObj)
   
    Scope (_SB)
    {
        Device (PC01)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC02)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC03)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC04)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PC05)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
       
        Device (PCI1)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI2)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI3)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI4)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
        Device (PCI5)
        {
            Name (_HID, EisaId ("GNP0A08"))
            Name (_CID, EisaId ("GNP0A03"))
        }
    }
}

Take a look here :
ASUS ROG Rampage VI Extreme Omega
 
@Loloflatsix I saw that thread. After messing with the new Cascade Lake X boards I just ordered the Omega and will return the Encore.

The MSI Creator X299 failed on me the same way as the Encore; and OP's Prime-A II board on him. They're all CLX refresh boards. There is something up with them.

I tried many days and never got anywhere. Usually I do not give up, but this time the tech devil won. Sadly.
 
@Loloflatsix I saw that thread. After messing with the new Cascade Lake X boards I just ordered the Omega and will return the Encore.

The MSI Creator X299 failed on me the same way as the Encore; and OP's Prime-A II board on him. They're all CLX refresh boards. There is something up with them.

I tried many days and never got anywhere. Usually I do not give up, but this time the tech devil won. Sadly.
This one giving up is wise. I have been looking for a way to fix this for several months with two host-bridges. From IOPICFamily source code:

// fix - all config cycles use first host bridge
if (!fHostBridge)
{
fHostBridge = hostBridge;
space.bits = 0;
fRootVendorProduct = configRead32(space, kIOPCIConfigVendorID);
#if defined(__i386__) || defined(__x86_64__)
if ( (0x27A08086 == fRootVendorProduct)
|| (0x27AC8086 == fRootVendorProduct)
|| (0x25C08086 == fRootVendorProduct)
|| (CPUID_FEATURE_VMM & cpuid_features()))
#endif
fFlags &= ~kIOPCIConfiguratorPFM64;
DLOG("root id 0x%x, flags 0x%x\n", fRootVendorProduct, (int) fFlags);
}

There is one static PCIConfigurator that uses the first root complex for all configurations. What this says is that for more than one root complexes, it is designed to fail sooner or later. I managed to get the system to boot with fewer devices installed. But simple pcidump crashes the system. I could never get two graphics cards to work. The IORanges for the second card are completely wrong.
 
Error-free DSDT for Asus Prime A II plus some patches ...
 

Attachments

  • DSDT.aml
    237.3 KB · Views: 139
I managed to get the system to boot with fewer devices installed.

What was required for that? I have an MSI X299 Pro and Cascade Lake-X arriving in a couple days. This one doesn't need to be a hackintosh system, but I'd like to see, at least, how far it's possible to get with it.

@apfelnico, do you have the hardware too?
 
Status
Not open for further replies.
Back
Top