From 542027b57106ae5365feeaeefe33e96271a3b5ae Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Fri, 6 Aug 2021 12:36:17 -0700 Subject: [PATCH] HintManagerService: only check isolated process for app uid system_server can initiate ADPF session, which may cause deadlock on chain AMS -> WMS -> graphics -> HintManagerService -> AMS. This CL is to skip the AMS call when calling from system. Test: Boot Bug: 195257481 Signed-off-by: Wei Wang Change-Id: I6c8f431193b31d7643d3782563b9f6c33fe69da0 --- .../com/android/server/power/hint/HintManagerService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/power/hint/HintManagerService.java b/services/core/java/com/android/server/power/hint/HintManagerService.java index 6014d0cee1711..2491565dd3763 100644 --- a/services/core/java/com/android/server/power/hint/HintManagerService.java +++ b/services/core/java/com/android/server/power/hint/HintManagerService.java @@ -255,7 +255,11 @@ public final class HintManagerService extends SystemService { private boolean checkTidValid(int uid, int tgid, int [] tids) { // Make sure all tids belongs to the same UID (including isolated UID), // tids can belong to different application processes. - List eligiblePids = mAmInternal.getIsolatedProcesses(uid); + List eligiblePids = null; + // To avoid deadlock, do not call into AMS if the call is from system. + if (uid != Process.SYSTEM_UID) { + eligiblePids = mAmInternal.getIsolatedProcesses(uid); + } if (eligiblePids == null) { eligiblePids = new ArrayList<>(); }