Contribute
Register

[Help] AppleALC Kernel Panic after Catalina update

Status
Not open for further replies.
Joined
Jun 15, 2015
Messages
50
Motherboard
Fujitsu Lifebook E744 HM86
CPU
i5-4300M
Graphics
HD 4600, 1600x900
Mac
  1. Mac Pro
Hi, I just updated to Catalina and everything went smooth expect of Bluetooth and sleep.

I managed to get Bluetooth working by changing brcmpatchram2.kext and adding the injector (found my problem online and solved) but now if my system goes to sleep and I wake it, after 5 to 10 seconds it crashes with the following KP:

Code:
panic(cpu 3 caller 0xffffff800202b747): "AppleHDAHDMI_DPDriver::setPowerState(0xffffff801e31b800 : 0xffffff7f83d87730, 0 -> 1) timed out after 10160 ms"@/BuildRoot/Library/Caches/com.apple.xbs/Sources/xnu/xnu-6110.0.0.121.5/iokit/Kernel/IOServicePM.cpp:5277
Backtrace (CPU 3), Frame : Return Address

I attached my debug files.
Thanks in advance
 

Attachments

  • debug_30261.zip
    5.1 MB · Views: 246
Hi, I've tried to disable HDMI to DP via whatevergreen and I've changed ig-platform-id with no luck. It seems to be something relative to my display port output and the audio but I can't figure out where this function is...

UPDATE: also noticed that if I have a display attached through the DP, this doesn't happen
 
Last edited:
I have the same problem. My three laptop are same.
 
I've found the part of code that cause the panic inside the file (at least i think), can clearly see the checks for the panic:
C++:
bool IOService::ackTimerTick( void )
{
    IOPMinformee *      nextObject;
    bool                done = false;

    PM_ASSERT_IN_GATE();
    switch (fMachineState) {
        case kIOPM_OurChangeWaitForPowerSettle:
        case kIOPM_ParentChangeWaitForPowerSettle:
            // are we waiting for controlling driver to acknowledge?
            if ( fDriverTimer > 0 )
            {
                // yes, decrement timer tick
                fDriverTimer--;
                if ( fDriverTimer == 0 )
                {
                    // controlling driver is tardy
                    uint64_t nsec = computeTimeDeltaNS(&fDriverCallStartTime);
                    OUR_PMLog(kPMLogCtrlDriverTardy, 0, 0);
                    setProperty(kIOPMTardyAckSPSKey, kOSBooleanTrue);
                    PM_ERROR("%s::setPowerState(%p, %lu -> %lu) timed out after %d ms\n",
                        fName, OBFUSCATE(this), fCurrentPowerState, fHeadNotePowerState, NS_TO_MS(nsec));

#if DEBUG && CONFIG_EMBEDDED
                    panic("%s::setPowerState(%p, %lu -> %lu) timed out after %d ms",
                        fName, this, fCurrentPowerState, fHeadNotePowerState, NS_TO_MS(nsec));
#else
                    if (gIOKitDebug & kIOLogDebugPower)
                    {
                        panic("%s::setPowerState(%p, %lu -> %lu) timed out after %d ms",
                            fName, this, fCurrentPowerState, fHeadNotePowerState, NS_TO_MS(nsec));
                    }
                    else
                    {
                        // Unblock state machine and pretend driver has acked.
                        done = true;
                    }
#endif
                    getPMRootDomain()->reset_watchdog_timer(this, 0);
                } else {
                    // still waiting, set timer again
                    start_ack_timer();
                }
            }
            break;

        case kIOPM_NotifyChildrenStart:
            // are we waiting for interested parties to acknowledge?
            if ( fHeadNotePendingAcks != 0 )
            {
                // yes, go through the list of interested drivers
                nextObject = fInterestedDrivers->firstInList();
                // and check each one
                while (  nextObject != NULL )
                {
                    if ( nextObject->timer > 0 )
                    {
                        nextObject->timer--;
                        // this one should have acked by now
                        if ( nextObject->timer == 0 )
                        {
                            uint64_t nsec = computeTimeDeltaNS(&nextObject->startTime);
                            OUR_PMLog(kPMLogIntDriverTardy, 0, 0);
                            nextObject->whatObject->setProperty(kIOPMTardyAckPSCKey, kOSBooleanTrue);
                            PM_ERROR("%s::powerState%sChangeTo(%p, %s, %lu -> %lu) timed out after %d ms\n",
                                nextObject->whatObject->getName(),
                                (fDriverCallReason == kDriverCallInformPreChange) ? "Will" : "Did",
                                OBFUSCATE(nextObject->whatObject), fName, fCurrentPowerState, fHeadNotePowerState,
                                NS_TO_MS(nsec));

                            // Pretend driver has acked.
                            fHeadNotePendingAcks--;
                        }
                    }
                    nextObject = fInterestedDrivers->nextInList(nextObject);
                }

                // is that the last?
                if ( fHeadNotePendingAcks == 0 )
                {
                    // yes, we can continue
                    done = true;
                } else {
                    // no, set timer again
                    start_ack_timer();
                }
            }
            break;

        // TODO: aggreggate this
        case kIOPM_OurChangeTellClientsPowerDown:
        case kIOPM_OurChangeTellUserPMPolicyPowerDown:
        case kIOPM_OurChangeTellPriorityClientsPowerDown:
        case kIOPM_OurChangeNotifyInterestedDriversWillChange:
        case kIOPM_ParentChangeTellPriorityClientsPowerDown:
        case kIOPM_ParentChangeNotifyInterestedDriversWillChange:
        case kIOPM_SyncTellClientsPowerDown:
        case kIOPM_SyncTellPriorityClientsPowerDown:
        case kIOPM_SyncNotifyWillChange:
        case kIOPM_TellCapabilityChangeDone:
            // apps didn't respond in time
            cleanClientResponses(true);
            OUR_PMLog(kPMLogClientTardy, 0, 1);
            // tardy equates to approval
            done = true;
            break;

        default:
            PM_LOG1("%s: unexpected ack timer tick (state = %d)\n",
                getName(), fMachineState);
            break;
    }
    return done;
}

How it can be useful in any way
 
UPDATE 2: If AppleALC is removed the system does not crash after sleep, going to check out AppleALC code to seek smth useful
 
After I've spent all the day for a solution I can confirm that I don't know what to do to fix this. If anyone has an idea pls share
 
Affected by this as well :'(. I'm attaching my debug files in hope they can help diagnose this bug.

EDIT: Updated crash files.
 

Attachments

  • debug_9948.zip
    2.3 MB · Views: 174
  • log-9-wake-fail.txt
    5.2 KB · Views: 309
Last edited:
Affected by this as well :'(. I'm attaching my debug files in hope they can help diagnose this bug.

EDIT: Updated crash files.

Thanks for sharing your files, i've seen that you too crash on "AudioAUUC 1.70", maybe it's something to do with how AppleALC interfaces with that(?), at this point i'm just assuming things and throwing ideas lol
 
I will try to examine both your and my crash dumps thoroughly in the next 20 hours, see if I can find something. I want to point out that I'm running a direct upgrade from Mojave where I did not experience this problem.
 
I will try to examine both your and my crash dumps thoroughly in the next 20 hours, see if I can find something. I want to point out that I'm running a direct upgrade from Mojave where I did not experience this problem.

Same for me, updated from Mojave.
 
Status
Not open for further replies.
Back
Top