Contribute
Register

GA-Z97M-D3H - Random freezing [SOLVED]

Status
Not open for further replies.
Test this. Verify that AppleLPC has loaded in ioreg.
Doesn't seem to be loading with this SSDT, checked via "kextstat|grep -y applelpc"

Attached new ioreg copy
 

Attachments

  • Virtual.ioreg
    2.6 MB · Views: 79

Attachments

  • SSDT-LPC.aml
    239 bytes · Views: 129
Try this.
I think thats got it. LPC looks to be loading and the Intel Power app is still functional. ioreg attached.
Screen Shot 2017-01-14 at 9.25.08 p.m..png
 

Attachments

  • Virtual.ioreg
    2.6 MB · Views: 86
Yep. Looks good. Try you're audio plugins and see what you get.
Yup all are loading just fine on Logic, Ableton and pro tools. Very nice work. I'm grateful you took the time to help me out. What was the problem in the end with the LPC SSDT ?
 
Yup all are loading just fine on Logic, Ableton and pro tools. Very nice work. I'm grateful you took the time to help me out. What was the problem in the end with the LPC SSDT ?

As it turns out was using the wrong Supported ID for example. You're now using pci8086,9cc1 instead of pci8086,8c4b but what don't make no sense is that on a ASUS Z97 Pro WIFI AC using pci8086,9cc1 still gets a crash with Intel Power Gadget even on my H97N-WIFI. But its sorted for you anyway. Need to do more investigating on this. You noticed that on different motherboards that the IDs are different.
0x8CC6 H97N-WIFI LPC Controller
0x8CC4 Z97M-D3H LPC Controller
0x8CC3 ASUS Z97 Pro WIFI AC LPC Controller
0x4C4B H97M-D3H LPC Controller
 
Last edited:
Ive noticed that Z97, H97 uses two different ID here look at this. CC6 is H97 LPC Controller & CC3 is Z97 LPC Controller. Both has different IDs.

Hi, again. Yes, that's why my SSDT-LPC did't work on your system. I just only added 8cc4 for Z97 to Rehabman's edited version...
Additionally i got some time for correcting your SSDT-SATA. I changed all wrong IDs and Buffers to correct names/values and it seems to work again.:) Don't need no AHCI injection kext anymore...
Bildschirmfoto 2017-01-17 um 05.31.24.png

BUT... suddenly Intel Widget doesn't like to run anymore. Ok, so i removed all ID's (in SSDT-SATA) Rehabman didn't use also (ended up at: device-id & compatible). And now Intel Widget works again surprisingly and System Profiler still says "Intel 9 Series Chipset". SSDT-SATA is fixed in my point of view...

I'm delighted you're finally using Rehabman's version of SSDT-LPC;). I don't know if you still interested in my version, but i like to share mine again. I added your 8086:8cc6 H97 LPC Controller and still keep on injecting 8cc3 HM97 LPC because it works here and it should work on yours too. Because like i said before: i didn't add your LPC device-id and we got some little trouble in understanding each other. Such as: you were using different device-id against compatible option. device-id and compatible must be the same ID. Otherwise Injection doesn't work. If you don't believe me, look at any SSDT Rehabman uses for injection.

Here is source of my edited SSDT-LPC for better reading.
Code:
DefinitionBlock("", "SSDT", 2, "hack", "LPC", 0)
{
    External(_SB.PCI0.LPCB, DeviceObj)

    Scope(_SB.PCI0.LPCB)
    {
        OperationRegion(RMP2, PCI_Config, 2, 2)
        Field(RMP2, AnyAcc, NoLock, Preserve)
        {
            LDID,16
        }
        Name(LPDL, Package()
        {
            // list of 9-series LPC device-ids not natively supported
            // inject 0x8cc3 for unsupported LPC device-id
            0x8cc4, 0x8cc6, 0,
            Package()
            {
                "device-id", Buffer() { 0xc3, 0x8c, 0, 0 },
                "compatible", Buffer() { "pci8086,8cc3" },
            },
        })
        Method(_DSM, 4)
        {
            If (!Arg2) { Return (Buffer() { 0x03 } ) }
            // search for matching device-id in device-id list, LPDL
            Local0 = Match(LPDL, MEQ, LDID, MTR, 0, 0)
            If (Ones != Local0)
            {
                // start search for zero-terminator (prefix to injection package)
                Local0 = Match(LPDL, MEQ, 0, MTR, 0, Local0+1)
                Return (DerefOf(LPDL[Local0+1]))
            }
            // if no match, assume it is supported natively... no inject
            Return (Package() { })
        }
    }
}
 

Attachments

  • SSDT-SATA.aml
    318 bytes · Views: 104
  • SSDT-LPC.aml
    233 bytes · Views: 126
Hi, again. Yes, that's why my SSDT-LPC did't work on your system. I just only added 8cc4 for Z97 to Rehabman's edited version...
Additionally i got some time for correcting your SSDT-SATA. I changed all wrong IDs and Buffers to correct names/values and it seems to work again.:) Don't need no AHCI injection kext anymore...
View attachment 230789
BUT... suddenly Intel Widget doesn't like to run anymore. Ok, so i removed all ID's (in SSDT-SATA) Rehabman didn't use also (ended up at: device-id & compatible). And now Intel Widget works again surprisingly and System Profiler still says "Intel 9 Series Chipset". SSDT-SATA is fixed in my point of view...

I'm delighted you're finally using Rehabman's version of SSDT-LPC;). I don't know if you still interested in my version, but i like to share mine again. I added your 8086:8cc6 H97 LPC Controller and still keep on injecting 8cc3 HM97 LPC because it works here and it should work on yours too. Because like i said before: i didn't add your LPC device-id and we got some little trouble in understanding each other. Such as: you were using different device-id against compatible option. device-id and compatible must be the same ID. Otherwise Injection doesn't work. If you don't believe me, look at any SSDT Rehabman uses for injection.

Here is source of my edited SSDT-LPC for better reading.
Code:
DefinitionBlock("", "SSDT", 2, "hack", "LPC", 0)
{
    External(_SB.PCI0.LPCB, DeviceObj)

    Scope(_SB.PCI0.LPCB)
    {
        OperationRegion(RMP2, PCI_Config, 2, 2)
        Field(RMP2, AnyAcc, NoLock, Preserve)
        {
            LDID,16
        }
        Name(LPDL, Package()
        {
            // list of 9-series LPC device-ids not natively supported
            // inject 0x8cc3 for unsupported LPC device-id
            0x8cc4, 0x8cc6, 0,
            Package()
            {
                "device-id", Buffer() { 0xc3, 0x8c, 0, 0 },
                "compatible", Buffer() { "pci8086,8cc3" },
            },
        })
        Method(_DSM, 4)
        {
            If (!Arg2) { Return (Buffer() { 0x03 } ) }
            // search for matching device-id in device-id list, LPDL
            Local0 = Match(LPDL, MEQ, LDID, MTR, 0, 0)
            If (Ones != Local0)
            {
                // start search for zero-terminator (prefix to injection package)
                Local0 = Match(LPDL, MEQ, 0, MTR, 0, Local0+1)
                Return (DerefOf(LPDL[Local0+1]))
            }
            // if no match, assume it is supported natively... no inject
            Return (Package() { })
        }
    }
}

SSDT-LPC is incorrect. You should be using "pci8086,9cc1" not "pci8086,8cc3".

Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "SSDT-LPC", 0x00000000)
{
    External (_SB_.PCI0.LPCB, DeviceObj)    // (from opcode)

    Scope (_SB.PCI0.LPCB)
    {
        OperationRegion (RMP2, PCI_Config, 0x02, 0x02)
        Field (RMP2, AnyAcc, NoLock, Preserve)
        {
            LDID,   16
        }

        Name (LPDL, Package (0x17)
        {
            0x9D48,
            0xA14E,
            0x8CC6,
            0x8CC4,
            0x8CC3,
            0x8C4B,
            0xA145,
            Zero,
            Package (0x04)
            {
                "device-id",
                Buffer (0x04)
                {
                     0xC1, 0x9C, 0x00, 0x00                        
                },

                "compatible",
                Buffer (0x0D)
                {
                    "pci8086,9cc1"
                }
            }
        })
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LNot (Arg2))
            {
                Return (Buffer (One)
                {
                     0x03                                          
                })
            }

            Store (Match (LPDL, MEQ, LDID, MTR, Zero, Zero), Local0)
            If (LNotEqual (Ones, Local0))
            {
                Store (Match (LPDL, MEQ, Zero, MTR, Zero, Add (Local0, One)), Local0)
                Return (DerefOf (Index (LPDL, Add (Local0, One))))
            }

            Return (Package (0x00) {})
        }
    }
}
 
Can you please eventually say any other word than "incorrect"? Why should a 100 series LPC Controller be more compatible to Z/H97 LPC than 8cc3 HM97?
 
Status
Not open for further replies.
Back
Top