ANDROID: Inherit "user-aware property" across rtmutex.
Since upstream commit 715f7f9e ("locking/rtmutex: Squash !RT tasks to DEFAULT_PRIO"), non-rt tasks do not inherit the nice-priority values across rt_mutexes. This removes the minor (and indirect) priority-inheritance that rt-mutexes provided for CFS tasks. Though without priority inheritance, time-bounded priority inversion can occur between CFS tasks of different nice priorities / cgroup limitations. The proxy-execution efforts are a work-in-progress to resolve this upstream, but in the meantime it is left to vendor hooks to provide a near term solution to avoid priority inversion between CFS tasks. In our oem scheduler, if a CFS thread has an "user-aware property", we will always pick it even if it's vruntime is bigger than the smallest one in runqueue. That's why the trace_android_rvh_replace_next_task_fair vendorhook was added previously in commit 53e80997 ("ANDROID: vendor_hooks: Add hooks for scheduler"). Thus for our oem scheduler, important CFS tasks(like RenderThread) are marked with the "user-aware property" in their struct task_struct. If those tasks are blocked on an rtmutex, we want to allow the "user-aware property" to be inherited to lock owner, so it will be selected to run immediately to release the lock. To support this, we need new hooks to map "user-aware property" into different rtmutex_waiter prio and update the owner's "user-aware property" if needed. Thus these additional vendor hooks are needed. In the future, once an generalized upstream solution for CFS priority inheritance is in place, this will no longer be needed. Bug: 290585456 Change-Id: I6521ed2086b147400a54da6b84a324baf16bc649 Signed-off-by:xieliujie <xieliujie@oppo.com>
Loading
Please sign in to comment