@@ -376,15 +376,15 @@ IOReturn AMDRyzenCPUPowerManagement::setPowerState(unsigned long powerStateOrdin
376
376
IOLog (" AMDCPUSupport::setPowerState preparing for sleep\n " );
377
377
sleepState.sleep = true ;
378
378
sleepState.cpb = getCPBState ();
379
- dumpPstate (sleepState.pstate );
379
+ // dumpPstate(sleepState.pstate);
380
380
381
381
stopWorkLoop ();
382
382
} else if (1 == powerStateOrdinal && sleepState.sleep ) {
383
383
// Waking up
384
384
IOLog (" AMDCPUSupport::setPowerState preparing for wakeup\n " );
385
385
sleepState.sleep = false ;
386
386
setCPBState (sleepState.cpb );
387
- writePstate (sleepState.pstate );
387
+ // writePstate(sleepState.pstate);
388
388
startWorkLoop ();
389
389
}
390
390
@@ -498,18 +498,22 @@ void AMDRyzenCPUPowerManagement::calculateEffectiveFrequency(uint8_t physical){
498
498
// read of last APERF, the effective frequency calculated in is invalid.
499
499
// Yeah, so we will do nothing.
500
500
if (APERF <= lastAPERF || MPERF <= lastMPERF) {
501
- IOLog (" AMDCPUSupport::calculateEffectiveFrequency: frequency is invalid!!!" );
501
+ IOLog (" AMDCPUSupport::calculateEffectiveFrequency: frequency is invalid for %u" , physical);
502
+ lastAPERF_PerCore[physical] = APERF;
503
+ lastMPERF_PerCore[physical] = MPERF;
502
504
return ;
503
505
}
504
506
505
507
float freqP0 = PStateDefClock_perCore[0 ];
506
508
507
509
uint64_t deltaAPERF = APERF - lastAPERF;
510
+ uint64_t deltaMPERF = MPERF - lastMPERF;
508
511
deltaAPERF_PerCore[physical] = deltaAPERF;
509
- deltaMPERF_PerCore[physical] = MPERF - lastMPERF;
510
- float effFreq = ((float )deltaAPERF / (float )(MPERF - lastMPERF)) * freqP0;
511
-
512
- effFreq_perCore[physical] = effFreq;
512
+ deltaMPERF_PerCore[physical] = deltaMPERF;
513
+ if (deltaMPERF != 0 ) {
514
+ float effFreq = ((float )deltaAPERF / (float )(deltaMPERF)) * freqP0;
515
+ effFreq_perCore[physical] = effFreq;
516
+ }
513
517
514
518
lastAPERF_PerCore[physical] = APERF;
515
519
lastMPERF_PerCore[physical] = MPERF;
0 commit comments