[PATCH v2 00/13] ANDROID: binder: RT priority inheritance and small fixes.

From: Martijn Coenen
Date: Thu Aug 31 2017 - 04:04:57 EST


Changes since v1 [1]:
- added more detailed commit messages and comments to the priority
inheritance patches, including rationale for not using
schet_setscheduler() directly, or rt_mutex prio inheritance.
No functional changes.

[1]: https://lkml.kernel.org/r/20170825093335.100892-1-maco@xxxxxxxxxxx

---

The first six patches in this set introduce support for priority
inheritance of real-time scheduling policies in binder. With the
introduction of Android Treble, functionality that used to be in a
single process is now split over two or more processes, which
communicate using binder IPC. For latency sensitive operations such as
sensor events, Bluetooth audio and rendering, inheriting the
(real-time) priority of the caller is crucial to meet requirements.

The implementation in this series directly calls into the scheduler to
modify priorities, since I haven't found a way to make this work
correctly with rt_mutex or other existing priority inheritance
mechanisms. I have found the current approach to be reliable, but I'm
happy to look into suggestions to make this work with existing
infrastructure. More details in the patches themselves.

Colin's patch adds a debug ioctl that allows us to more accurately track
memory leaks, as it allows us to identify objects to which only remote
processes have a reference.

The subsequent patches are mostly small fixes and (hopefully) well
explained in the commit messages.

All patches except 'Add tracing for binder priority inheritance' have
already been reviewed by Android engineers and are merged in Android's
common kernel trees.

---

Colin Cross (1):
ANDROID: binder: Add BINDER_GET_NODE_DEBUG_INFO ioctl

Martijn Coenen (12):
ANDROID: binder: remove proc waitqueue
ANDROID: binder: push new transactions to waiting threads.
ANDROID: binder: add support for RT prio inheritance.
ANDROID: binder: add min sched_policy to node.
ANDROID: binder: improve priority inheritance.
ANDROID: binder: add RT inheritance flag to node.
ANDROID: binder: don't check prio permissions on restore.
ANDROID: binder: Don't BUG_ON(!spin_is_locked()).
ANDROID: binder: call poll_wait() unconditionally.
ANDROID: binder: don't enqueue death notifications to thread todo.
ANDROID: binder: don't queue async transactions to thread.
ANDROID: binder: Add tracing for binder priority inheritance.

drivers/android/binder.c | 773 ++++++++++++++++++++++++++++--------
drivers/android/binder_trace.h | 24 ++
include/uapi/linux/android/binder.h | 63 ++-
3 files changed, 689 insertions(+), 171 deletions(-)

--
2.14.1.581.gf28d330327-goog