From: Gregory Haskins <ghaskins@novell.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: mingo@elte.hu, paulmck@linux.vnet.ibm.com, tglx@linutronix.de,
rostedt@goodmis.org, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org, gregory.haskins@gmail.com,
David.Holmes@sun.com, jkacur@gmail.com
Subject: Re: [PATCH RT RFC v4 1/8] add generalized priority-inheritance interface
Date: Tue, 19 Aug 2008 04:40:13 -0400 [thread overview]
Message-ID: <48AA86ED.4060407@novell.com> (raw)
In-Reply-To: <1218916561.10880.11.camel@lappy.programming.kicks-ass.net>
[-- Attachment #1: Type: text/plain, Size: 2481 bytes --]
Hi Peter,
Peter Zijlstra wrote:
> On Fri, 2008-08-15 at 16:28 -0400, Gregory Haskins wrote:
>
>> The kernel currently addresses priority-inversion through priority-
>> inheritence. However, all of the priority-inheritence logic is
>> integrated into the Real-Time Mutex infrastructure. This causes a few
>> problems:
>>
>> 1) This tightly coupled relationship makes it difficult to extend to
>> other areas of the kernel (for instance, pi-aware wait-queues may
>> be desirable).
>> 2) Enhancing the rtmutex infrastructure becomes challenging because
>> there is no seperation between the locking code, and the pi-code.
>>
>> This patch aims to rectify these shortcomings by designing a stand-alone
>> pi framework which can then be used to replace the rtmutex-specific
>> version. The goal of this framework is to provide similar functionality
>> to the existing subsystem, but with sole focus on PI and the
>> relationships between objects that can boost priority, and the objects
>> that get boosted.
>>
>> We introduce the concept of a "pi_source" and a "pi_sink", where, as the
>> name suggests provides the basic relationship of a priority source, and
>> its boosted target. A pi_source acts as a reference to some arbitrary
>> source of priority, and a pi_sink can be boosted (or deboosted) by
>> a pi_source. For more details, please read the library documentation.
>>
>> There are currently no users of this inteface.
>>
>
> You should have started out by discussing your design - the document
> just rambles a bit about some implementation details - it doesn't talk
> about how it maps to the PI problem space.
>
The doc is still a work-in-progress, but point taken ;) I will address
this shortly.
> Anyway - from what I can make of the code, you managed to convert the pi
> graph walking code that used to be in rt_mutex_adjust_prio_chain() and
> was iterative, into a recursive function call.
>
> Not something you should do lightly..
>
As we discussed on IRC yesterday, you are correct here. I was thinking
that the graph couldn't get deeper than a few dozen entries, but I
forgot about userspace futex access. But, this is precisely what the
"release early" policy is designed to catch ;)
I think I can make a slight adjustment to the model to return it to an
iterative design. I will address this in v5.
Thanks for the review, Peter!
Regards,
-Greg
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
next prev parent reply other threads:[~2008-08-19 8:42 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-01 21:16 [PATCH RT RFC 0/7] Priority Inheritance enhancements Gregory Haskins
2008-08-01 21:16 ` [PATCH RT RFC 1/7] add generalized priority-inheritance interface Gregory Haskins
2008-08-01 21:16 ` Gregory Haskins
2008-08-01 21:16 ` [PATCH RT RFC 2/7] sched: add the basic PI infrastructure to the task_struct Gregory Haskins
2008-08-01 21:17 ` [PATCH RT RFC 3/7] rtmutex: formally initialize the rt_mutex_waiters Gregory Haskins
2008-08-01 21:17 ` [PATCH RT RFC 4/7] RT: wrap the rt_rwlock "add reader" logic Gregory Haskins
2008-08-01 21:17 ` [PATCH RT RFC 5/7] rtmutex: use runtime init for rtmutexes Gregory Haskins
2008-08-01 21:17 ` [PATCH RT RFC 6/7] rtmutex: convert rtmutexes to fully use the PI library Gregory Haskins
2008-08-01 21:17 ` Gregory Haskins
2008-08-01 21:17 ` [PATCH RT RFC 7/7] rtmutex: pi-boost locks as late as possible Gregory Haskins
2008-08-04 13:21 ` Gregory Haskins
2008-08-05 3:01 ` Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 0/8] Priority Inheritance enhancements Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 1/8] add generalized priority-inheritance interface Gregory Haskins
2008-08-15 12:08 ` Gregory Haskins
2008-08-15 13:16 ` [PATCH RT RFC v3] " Gregory Haskins
2008-08-15 13:16 ` Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 2/8] sched: add the basic PI infrastructure to the task_struct Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 3/8] sched: rework task reference counting to work with the pi infrastructure Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 4/8] rtmutex: formally initialize the rt_mutex_waiters Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 5/8] RT: wrap the rt_rwlock "add reader" logic Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 6/8] rtmutex: use runtime init for rtmutexes Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 7/8] rtmutex: convert rtmutexes to fully use the PI library Gregory Haskins
2008-08-15 12:08 ` Gregory Haskins
2008-08-15 12:08 ` [PATCH RT RFC v2 8/8] rtmutex: pi-boost locks as late as possible Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 0/8] Priority Inheritance enhancements Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 1/8] add generalized priority-inheritance interface Gregory Haskins
2008-08-15 20:28 ` Gregory Haskins
2008-08-15 20:32 ` Gregory Haskins
2008-08-15 20:32 ` Gregory Haskins
2008-08-16 15:32 ` AW: " Matthias Behr
2008-08-19 8:34 ` Gregory Haskins
2008-08-16 19:56 ` Peter Zijlstra
2008-08-19 8:40 ` Gregory Haskins [this message]
2008-08-22 12:55 ` Esben Nielsen
2008-08-22 13:15 ` Gregory Haskins
2008-08-22 16:08 ` Gregory Haskins
2008-08-22 13:17 ` Steven Rostedt
2008-08-15 20:28 ` [PATCH RT RFC v4 2/8] sched: add the basic PI infrastructure to the task_struct Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 3/8] sched: rework task reference counting to work with the pi infrastructure Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 4/8] rtmutex: formally initialize the rt_mutex_waiters Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 5/8] RT: wrap the rt_rwlock "add reader" logic Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 6/8] rtmutex: use runtime init for rtmutexes Gregory Haskins
2008-08-15 20:28 ` [PATCH RT RFC v4 7/8] rtmutex: convert rtmutexes to fully use the PI library Gregory Haskins
2008-08-15 20:28 ` Gregory Haskins
2008-08-15 20:29 ` [PATCH RT RFC v4 8/8] rtmutex: pi-boost locks as late as possible Gregory Haskins
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=48AA86ED.4060407@novell.com \
--to=ghaskins@novell.com \
--cc=David.Holmes@sun.com \
--cc=gregory.haskins@gmail.com \
--cc=jkacur@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/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.