From: Martijn Coenen <maco@android.com>
To: gregkh@linuxfoundation.org, john.stultz@linaro.org,
tkjos@google.com, arve@android.com, sherryy@android.com,
tglx@linutronix.de, peterz@infradead.org, amit.pundir@linaro.org
Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org,
maco@google.com, Martijn Coenen <maco@android.com>
Subject: [PATCH v3 0/6] ANDROID: binder: RT priority inheritance
Date: Thu, 26 Oct 2017 16:07:44 +0200 [thread overview]
Message-ID: <20171026140750.119265-1-maco@android.com> (raw)
Changes since v2 [1]:
- All patches in v2 not related to priority inheritance were merged,
and hence removed from this series
- Fixed using the wrong mask in node scheduler policy calculation,
originally reported by Ganesh Mahendran <opensource.ganesh@gmail.com>
- Fixed using an uninitialized value for desired_prio,
originally reported by Ganesh Mahendran <opensource.ganesh@gmail.com>
Changes since v1 [2]:
- 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/20170831080430.118765-1-maco@android.com
[2]: https://lkml.kernel.org/r/20170825093335.100892-1-maco@android.com
---
This patch series introduces 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. The main
reasons a PI rt_mutex doesn't work well are the following:
1) Binder supports asynchronous transactions, where a caller isn't blocked
on a result; therefore, the caller also couldn't block on a rt_mutex.
2) Binder supports the concept of 'node priority', where the priority of a
call is not determined by the caller, but by the endpoint the caller
calls in to.
3) There may not necessarily be any binder threads waiting to handle a
transaction, so the caller doesn't always have a thread to change the
priority of; instead, the first thread to pick up the work changes its
own priority.
4) rt_mutex doesn't support non-RT policies (though a patch was sent to
LKML once to address this).
More details in the patches themselves. I have found the current approach
to be reliable, but I'm happy to look into suggestions to make this work
with rt_mutex, or use other infrastructure.
All patches have already been reviewed by Android engineers and are
merged in Android's common kernel trees.
Martijn Coenen (6):
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: Add tracing for binder priority inheritance.
drivers/android/binder.c | 294 ++++++++++++++++++++++++++++++++----
drivers/android/binder_trace.h | 24 +++
include/uapi/linux/android/binder.h | 49 +++++-
3 files changed, 334 insertions(+), 33 deletions(-)
--
2.15.0.rc2.357.g7e34df9404-goog
next reply other threads:[~2017-10-26 14:08 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-26 14:07 Martijn Coenen [this message]
2017-10-26 14:07 ` [PATCH v3 1/6] ANDROID: binder: add support for RT prio inheritance Martijn Coenen
2017-11-15 13:01 ` Peter Zijlstra
2017-11-16 9:18 ` Martijn Coenen
2017-11-16 11:27 ` Peter Zijlstra
2017-11-16 13:03 ` Martijn Coenen
2017-11-16 15:10 ` Peter Zijlstra
2017-11-17 10:23 ` Martijn Coenen
2017-10-26 14:07 ` [PATCH v3 2/6] ANDROID: binder: add min sched_policy to node Martijn Coenen
2017-11-15 13:02 ` Peter Zijlstra
2017-11-16 9:27 ` Martijn Coenen
2017-10-26 14:07 ` [PATCH v3 3/6] ANDROID: binder: improve priority inheritance Martijn Coenen
2017-11-15 13:03 ` Peter Zijlstra
2017-11-16 9:31 ` Martijn Coenen
2017-10-26 14:07 ` [PATCH v3 4/6] ANDROID: binder: add RT inheritance flag to node Martijn Coenen
2017-11-15 13:05 ` Peter Zijlstra
2017-11-16 9:37 ` Martijn Coenen
2017-10-26 14:07 ` [PATCH v3 5/6] ANDROID: binder: don't check prio permissions on restore Martijn Coenen
2017-11-15 13:08 ` Peter Zijlstra
2017-10-26 14:07 ` [PATCH v3 6/6] ANDROID: binder: Add tracing for binder priority inheritance Martijn Coenen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171026140750.119265-1-maco@android.com \
--to=maco@android.com \
--cc=amit.pundir@linaro.org \
--cc=arve@android.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maco@google.com \
--cc=peterz@infradead.org \
--cc=sherryy@android.com \
--cc=tglx@linutronix.de \
--cc=tkjos@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.