Handle negative CPU availability percent in CpuMonitorService.
Test: m; atest CpuMonitorServiceTest.
Bug: 278142170
Change-Id: I21999ac56bbdc85990ed06354a427c5008061054
diff --git a/services/core/java/com/android/server/cpu/CpuMonitorService.java b/services/core/java/com/android/server/cpu/CpuMonitorService.java
index df8cfad..7ea2c1b 100644
--- a/services/core/java/com/android/server/cpu/CpuMonitorService.java
+++ b/services/core/java/com/android/server/cpu/CpuMonitorService.java
@@ -653,8 +653,17 @@
}
public int getAverageAvailableCpuFreqPercent() {
- return (int) ((totalNormalizedAvailableCpuFreqKHz * 100.0)
+ int percent = (int) ((totalNormalizedAvailableCpuFreqKHz * 100.0)
/ totalOnlineMaxCpuFreqKHz);
+ if (percent < 0) {
+ // TODO(b/279478586): This case should never happen. But this case happens
+ // rarely on certain hardware, which indicates a deeper issue. Once this
+ // issue is reproduced, use this log to debug the issue and fix it.
+ Slogf.wtf(TAG, "Computed negative CPU availability percent(%d) for %s ",
+ percent, toString());
+ return 0;
+ }
+ return percent;
}
@Override