[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160614142254.76f5abd2@grimm.local.home>
Date: Tue, 14 Jun 2016 14:22:54 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Peter Zijlstra <peterz@...radead.org>
Cc: mingo@...nel.org, tglx@...utronix.de, juri.lelli@....com,
xlpang@...hat.com, linux-kernel@...r.kernel.org,
mathieu.desnoyers@...icios.com, jdesfossez@...icios.com,
bristot@...hat.com, Ingo Molnar <mingo@...hat.com>
Subject: Re: [RFC][PATCH 1/8] rtmutex: Deboost before waking up the top
waiter
On Tue, 07 Jun 2016 21:56:36 +0200
Peter Zijlstra <peterz@...radead.org> wrote:
> From: Xunlei Pang <xlpang@...hat.com>
>
> We should deboost before waking the high-prio task, such that
> we don't run two tasks with the same "state"(priority, deadline,
> sched_class, etc) during the period between the end of wake_up_q()
> and the end of rt_mutex_adjust_prio().
>
> As "Peter Zijlstra" said:
> Its semantically icky to have the two tasks running off the same
> state and practically icky when you consider bandwidth inheritance --
> where the boosted task wants to explicitly modify the state of the
> booster. In that latter case you really want to unboost before you
> let the booster run again.
>
> But this however can lead to prio-inversion if current would get
> preempted after the deboost but before waking our high-prio task,
> hence we disable preemption before doing deboost, and enabling it
> after the wake up is over.
>
> The patch fixed the logic, and introduced rt_mutex_postunlock()
> to do some code refactor.
>
> Most importantly however; this change ensures pointer stability for
> the next patch, where we have rt_mutex_setprio() cache a pointer to
> the top-most waiter task. If we, as before this change, do the wakeup
> first and then deboost, this pointer might point into thin air.
>
> Cc: Steven Rostedt <rostedt@...dmis.org>
Acked-by: Steven Rostedt <rostedt@...dmis.org>
-- Steve
> Cc: Ingo Molnar <mingo@...hat.com>
> Cc: Juri Lelli <juri.lelli@....com>
> Suggested-by: Peter Zijlstra <peterz@...radead.org>
> [peterz: Changelog]
> Signed-off-by: Xunlei Pang <xlpang@...hat.com>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
> Link: http://lkml.kernel.org/r/1461659449-19497-1-git-send-email-xlpang@redhat.com
> ---
Powered by blists - more mailing lists