diff --git a/aidl/power-libperfmgr/PowerHintSession.cpp b/aidl/power-libperfmgr/PowerHintSession.cpp
index 5c7532e..8de1021 100644
--- a/aidl/power-libperfmgr/PowerHintSession.cpp
+++ b/aidl/power-libperfmgr/PowerHintSession.cpp
@@ -416,14 +416,13 @@
         ATRACE_NAME(tag.c_str());
     }
     std::shared_ptr<AdpfConfig> adpfConfig = HintManager::GetInstance()->GetAdpfProfile();
-    int min = std::max(mDescriptor->current_min, static_cast<int>(adpfConfig->mUclampMinInit));
-    mDescriptor->current_min = min;
-    PowerSessionManager::getInstance()->setUclampMinLocked(this, min);
+    mDescriptor->current_min =
+            std::max(mDescriptor->current_min, static_cast<int>(adpfConfig->mUclampMinInit));
 
     if (ATRACE_ENABLED()) {
         const std::string idstr = getIdString();
         std::string sz = StringPrintf("adpf.%s-min", idstr.c_str());
-        ATRACE_INT(sz.c_str(), min);
+        ATRACE_INT(sz.c_str(), mDescriptor->current_min);
     }
 }
 
diff --git a/aidl/power-libperfmgr/PowerSessionManager.cpp b/aidl/power-libperfmgr/PowerSessionManager.cpp
index 888118d..ddd9f75 100644
--- a/aidl/power-libperfmgr/PowerSessionManager.cpp
+++ b/aidl/power-libperfmgr/PowerSessionManager.cpp
@@ -23,6 +23,7 @@
 namespace impl {
 namespace pixel {
 
+using ::android::perfmgr::AdpfConfig;
 using ::android::perfmgr::HintManager;
 
 namespace {
@@ -93,7 +94,28 @@
 
 void PowerSessionManager::wakeSessions() {
     std::lock_guard<std::mutex> guard(mLock);
-    for (PowerHintSession *s : mSessions) {
+    std::shared_ptr<AdpfConfig> adpfConfig = HintManager::GetInstance()->GetAdpfProfile();
+    std::unordered_set<PowerHintSession *> wakeupList;
+    const int wakeupBoostValue = static_cast<int>(adpfConfig->mUclampMinInit);
+    for (auto &it : mTidSessionListMap) {
+        int tid = it.first;
+        int maxboost = -1;
+        // Find the max boost value among all the sessions that include the same TID.
+        for (PowerHintSession *s : it.second) {
+            if (!s->isActive())
+                continue;
+            // all active sessions need to be awakened.
+            wakeupList.insert(s);
+            if (s->isTimeout()) {
+                maxboost = std::max(maxboost, s->getUclampMin());
+            }
+        }
+        // Found the max boost and actally set to the task.
+        if (maxboost != -1) {
+            set_uclamp_min(tid, std::max(maxboost, wakeupBoostValue));
+        }
+    }
+    for (PowerHintSession *s : wakeupList) {
         s->wakeup();
     }
 }
