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