From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751799AbdLKTyg (ORCPT ); Mon, 11 Dec 2017 14:54:36 -0500 Received: from perses.usurf.usu.edu ([129.123.197.145]:22769 "EHLO Perses.usurf.usu.edu" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1750886AbdLKTye (ORCPT ); Mon, 11 Dec 2017 14:54:34 -0500 From: Jonathan Haws To: "rostedt@goodmis.org" CC: "bigeasy@linutronix.de" , "mingo@kernel.org" , "linux-kernel@vger.kernel.org" , "tglx@linutronix.de" , "deepa.kernel@gmail.com" , "viro@zeniv.linux.org.uk" , "akpm@linux-foundation.org" , "linux-rt-users@vger.kernel.org" , "arnd@arndb.de" Subject: Re: [RFC][PATCH] ipc: mqueue: wq_add priority changed to dynamic priority Thread-Topic: [RFC][PATCH] ipc: mqueue: wq_add priority changed to dynamic priority Thread-Index: AQHTcpYDOtyT1wya5E+3FpmD/+BJG6M+YPW1gACc1oCAAAYYAA== Date: Mon, 11 Dec 2017 19:54:33 +0000 Message-ID: <1513022070.2797.13.camel@sdl.usu.edu> References: <1513006652-7014-1-git-send-email-jhaws@sdl.usu.edu> <1513012323038.16494@sdl.usu.edu> <20171211143241.6b5e627d@gandalf.local.home> In-Reply-To: <20171211143241.6b5e627d@gandalf.local.home> Reply-To: Jonathan Haws Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.18.5.2-0ubuntu3.2 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [172.31.22.119] Content-Type: text/plain; charset="utf-8" Content-ID: <45FE5700E6458F4A82E3649F5B9FB107@sdl.usu.edu> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id vBBJshTM020216 On Mon, 2017-12-11 at 14:32 -0500, Steven Rostedt wrote: > On Mon, 11 Dec 2017 17:12:05 +0000 > Jonathan Haws wrote: > > > > > Adding linux-rt-users group to thread. > > ________________________________________ > > From: Jonathan Haws > > Sent: Monday, December 11, 2017 08:37 > > To: mingo@kernel.org; viro@zeniv.linux.org.uk; arnd@arndb.de; akpm@ > > linux-foundation.org; deepa.kernel@gmail.com > > Cc: linux-kernel@vger.kernel.org; tglx@linutronix.de; bigeasy@linut > > ronix.de; rostedt@goodmis.org; Jonathan Haws > > Subject: [RFC][PATCH] ipc: mqueue: wq_add priority changed to > > dynamic priority > > > > Previous behavior added tasks to the work queue using the > > static_prio value > > instead of the dynamic priority value in prio. This caused RT tasks > > to be > > added to the work queue in a FIFO manner rather than by priority. > > Normal > > tasks were handled by priority. > > > > This fix utilizes the dynamic priority of the task to ensure that > > both RT > > and normal tasks are added to the work queue in priority order. > > Utilizing > > the dynamic priority (prio) rather than the base priority > > (normal_prio) was > > chosen to ensure that if a task had a boosted priority when it was > > added to > > the work queue, it would be woken sooner to to ensure that it > > releases any > > other locks it may be holding in a more timely manner. It is > > understood that > > the task could have a lower priority when it wakes than when it was > > added to > > the queue in this (unlikely) case. > Probably a better subject would be: > >  ipc: mqueue: Have RT tasks queue in by priority in wq_add() Is the best way to change that just to change it in the email thread or resubmit the patch as v2? > > Other than that (and that this doesn't handle DL tasks), > > Reviewed-by: Steven Rostedt (VMware) > > -- Steve > I'm still new to kernel scheduling details - can you elaborate on what a DL task is?  I'm happy to update the patch to handle DL tasks as well if it makes sense to do so. Thanks! Jon > > > > > > Signed-off-by: Jonathan Haws > > --- > >  ipc/mqueue.c | 2 +- > >  1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/ipc/mqueue.c b/ipc/mqueue.c > > index 9649ecd..cb96db9 100644 > > --- a/ipc/mqueue.c > > +++ b/ipc/mqueue.c > > @@ -546,7 +546,7 @@ static void wq_add(struct mqueue_inode_info > > *info, int sr, > >         ewp->task = current; > > > >         list_for_each_entry(walk, &info->e_wait_q[sr].list, list) { > > -               if (walk->task->static_prio <= current- > > >static_prio) { > > +               if (walk->task->prio <= current->prio) { > >                         list_add_tail(&ewp->list, &walk->list); > >                         return; > >                 } > > -- > > 2.7.4 > >